Archiwum dla kategorii ‘SQL’

Zmiana konta usługi SQL z PowerShell

2013-10-08

Oto, jak przy pomocy PowerShella można zmienić konto na jakim pracuje wybrana instancja SQL Servera: function ChangeSqlServiceAccount($serverName, $instanceName, $userName, $password) { #ladowanie SMO odpowiedzialnego za konsole uslug sql  [System.Reflection.Assembly]::LoadWithPartialName(„Microsoft.SqlServer.SqlWmiManagement”)  $SMOWmiserver = New-Object (’Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer’)$serverName   #Odnalezienie zadanej instancji $ChangeService=$SMOWmiserver.Services | where {$_.Name -eq $instanceName}   #Zmiana konta $ChangeService.SetServiceAccount($userName, $password) }  Jeśli zdefiniowałeś w/w funkcję to wywołujesz […]

Jak zabić procesy użytkowników korzystających z bazy danych?

2013-09-20

Moje rozwiązanie, to przestawić bazę w tryb SINGLE USER kończąc natychmiast wszystkie otwarte transakcje: ALTER DATABASE AdventureWorks SET SINGLE_USER WITH ROLLBACK IMMEDIATE a potem przełączyć bazę w tryb MULTI_USER: ALTER DATABASE AdventureWorks SET MULTI_USER   Rozwiązanie z http://www.sqlservercentral.com/articles/Backup+%2f+Restore/71272/

By Rafał Kraik in SQL

Audyt w oparciu o trigger

2013-09-19

Budując audyt możesz skusić się na śledzenie modyfikacji rekordów w taki sposób aby zapamiętać zmianę każdego rekordu, jego wstawienie lub usunięcie tak, aby wiadomo było kto i kiedy był autorem jakiej poprawki. Łatwo to osiągnąć stosując triggery, ale pamiętaj, że nie jest to w 100% poprawny audyt, bo triggery administrator może wyłączyć, albo może skasować […]

By Rafał Kraik in SQL

TOP od tyłu (z końcowymi rekordami)

2013-09-12

Trzeba uporządkować rekordy wg pewnej kolumny, w naszym przykładzie dajmy na to wg orderid. Spośród tych rekordów chcemy wybrać tylko 5 ostatnich. Ha nic w tym trudnego, wystarczy takie zapytanie: SELECT TOP(5) orderid FROM Sales.Orders ORDER BY ordered DESC …tylko, że użytkownik chce zobaczyć te rekordy ułożone w kolejności rosnącej. Jeśli w zapytaniu zmienisz DESC […]

By Rafał Kraik in SQL

Niespójność w PARSE i ISNUMERIC

2013-09-12

Wydawać by się mogło, że jeśli funkcja ISNUMERC stwierdziła, że przekazany w argumencie tekst jest poprawnym wyrażeniem numerycznym, to funkcja PARSE powinna umieć ten napis poprawnie skonwertować na liczbę. Tymczasem: SELECT ISNUMERIC(‘1E3’) zwraca true SELECT PARSE(‘1E3 As FLOAT) zwraca 1000, czyli póki co wszystko działa. Ale: SELECT ISNUMERIC(‘1+E3’) zwraca true SELECT PARSE(‘1+E3 As FLOAT) zwraca […]

By Rafał Kraik in SQL

Jak usunąć ze zmiennej DATETIME część dotyczącą sekund i pozostałe, zostawiając datę i czas z dokładnością do minuty

2013-08-21

Problem jest następujący. Mamy czas z taką dokładnością jak np DATETIME lub DATETIME2. Chcemy pozbyć się części od sekund w dół, czyli mają pozostać tylko data, godzina i minuta. Z pomocą przychodzi tym SMALLDATETIME. Działa on z dokładnością do sekund, ale… kiedy konwertujesz do niego, to funkcja CAST przeprowadza konwersję z dokładnością do minut! Czemu […]

By Rafał Kraik in SQL

Generowanie tabeli interwałów czasowych

2013-08-21

Problem jest następujący. Potrzebna jest tabela wypełniona godzinami (lub datami), w oparciu o którą dalej będzie można budować wyrażenie JOIN dobierające dane z innej tabeli tak aby agregować wszystkie zdarzenia z danej godziny razem. Oto moja propozycja: CREATE PROCEDURE dbo.GetIntervals @dateTimeStart DATETIME, @countMax INT AS BEGIN CREATE TABLE #time ( StartInterval SMALLDATETIME, StopInterval SMALLDATETIME)

By Rafał Kraik in SQL