Klauzula OUTPUT w zapytaniach T-SQL

Chciałem napisać kilka słów o klauzuli OUTPUT stosowanej w operacjach DML języka T-SQL. Wydaje mi się, że jest to często zapominana klauzula, a nawet stwierdzam, że wiele osób o niej nie wiem. Wielokrotnie widziałem, kod który miał za zadanie zalogować jakieś zmiant w tabeli. Często stosowano do tego odpowiednie rodzaje wyzwalaczy (triggerów), gdzie w trakcie jednej z operacji DML (Delete, Insert czy Update) wykorzystywane były tabele Inserted i /lub Deleted. SQL Server automatycznie zarządza tymi tabelami i udostępnia je podczas wykonywania wyzwalaczyoraz Dowiedz się więcej…

Tworzymy login z podanym SID-em

Czasami zdarza się, że należy utworzyć login z góry zadanym SID-em. Problem tego typu można zaobserwować podczas korzystania z usług Log Shipping’u, AlwaysOn Availability Group czy miroringu. W momencie przełączenia się na serwer zapasowy podczas próby podłączenia się do bazy danych występuje błąd logowania. Sytuacja taka dotyczy jedynie loginów SQLowych, a nie kont do logowania się do Windows czy też kont z AD. W sytuacjach opisywanych powyżej zawsze mamy do czynienia z minimum dwoma serwerami SQL. Gdy założymy, że pracujemy z dwoma Dowiedz się więcej…

Prawa de Morgana

Ostatnio zauważyłem kontrolując kody w T-SQL, że młodzi deweloperzy nie pamiętają prawa de Morgana lub źle go interpretują. W celu przypomnienia takich podstaw omówimy dwa prawa. I prawo de Morgana jest prawem zaprzeczenia koniunkcji Zaprzeczenie koniunkcji dwóch zdań ∼(p∧q) jest równoważne alternatywie zaprzeczeń tych zdań (∼p)∨(∼q). (∼(p∧q))⇔((∼p)∨(∼q)) NOT(a AND b) = (NOT a) OR (NOT b) II prawo de Morgana jest prawem zaprzeczenia alternatyw Zaprzeczenie alternatywy dwóch zdań ∼(p∨q) jest równoważne koniunkcji zaprzeczeń tych zdań (∼p)∧(∼q). (∼(p∨q))⇔((∼p)∧(∼q)) NOT(a OR b) = (NOT Dowiedz się więcej…

Flagi, mapy bitowe w T-SQL

Flaga to liczba z jedną jedynką (lub więcej) opisująca jakąś cechę. Wartości flag nie powinny się pokrywać, chyba że się nie wykluczają – wspólna (pod)cecha. Generalnie mapy bitowe pozwalają na przechowywanie wielu wartości flag czyli wartości poszczególnych bitów mapy (flag, ustawień) w jednej liczbie. Do sprawdzania flag najlepiej jest używać operatory bitowe. 32-bitowy INT to 32 bity informacji na 4 bajtach, 32 informacje logiczne które zapisane z użyciem typu bit zajmowałyby całe 32 bajty. Operacje logiczne na Mapach bitowych: sprawdzenie ustawienia wybranych Dowiedz się więcej…

Operatory bitowe do wykonywania operacji logicznych w T-SQL cz.II

W poprzedniej części Operatory bitowe do wykonywania operacji logicznych w T-SQL cz.I opisane zostały podstawowe operacje bitowe w T-SQL oparte na zmiennych typu bit. Teraz chcę podać przykład wyliczania tego typu operacji dla zmiennych liczbowych np. typu INT. Zasada jest podobna, gdyż na początku liczby trzeba rozpisać na postać binarną, a następnie na podstawie porównywania pojedynczych bitów (tak jak przedstawiono w części pierwszej) należy dopiero stworzyć tablice prawdy i uzyskany w ten sposób wynik binarny przekształcić na postać dziesiętną. & (Bitwise AND) Dowiedz się więcej…