SET CONTEXT_INFO

Z dokumentacji technet ( http://msdn.microsoft.com/en-us/library/ms187768%28v=sql.105%29.aspx )

„Associates up to 128 bytes of binary information with the current session or connection. „

Niewiele osób o tym wie, ale SQL Server pozwala na ustawienie jednej zmiennej globalnej (typu binary(128)), dostępnej do odczytu i modyfikacji podczas działania wszystkich operacji wykonywanych w ramach sesji użytkownika.

Innymi słowy możemy zapisać jakąś wartosc, wykorzystać ja w dowolnym kodzie, który będzie wykonywany podczas naszego połączenia do bazy (np w procedurze albo nawet w triggerze czy funkcji), taka zmienna będzie dostępna aż do zakończenia połączenia z bazą danych.

Do czego może nam to się przydac?

– do identyfikacji operacji serwisowych (implementujemy specjalną logikę w naszym kodzie, jesli zmienna kontekstowa zawiera jakis unikalny klucz to możemy wywołać cos niestandardowego)

– oznaczanie charakterystycznych połączeń znacznikami (przykładowo możemy ustawić jako operację administratora: „WDROŻENIE PATCHA”, zawartośc context_info mozna odczytac bez problemu w tabelach sys.sysprocesses, sys.dm_exec_sessions, sys.dm_exec_requests da się zatem wtedy rozpozna, ze dany proces i jego aktualnie wywolywana instrukcja sa elementem wdrozenia jednego patcha)

– do zabawy 🙂 sky is the limit 😛

Przykład:

Wynik:

Post pierwotnie opublikowany jako TSQL na dziś #9

Dodaj komentarz