Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jaki jest zakres CONTEXT_INFO w SQL Server?

Informacje kontekstowe nie mają zasięgu (w sensie zakresu zmiennych językowych) i są powiązane z czasem życia sesji. Po ustawieniu informacje kontekstowe pozostają na ustawionej wartości, dopóki połączenie nie zostanie zamknięte (sesja zostanie zakończona) lub do momentu ustawienia nowej wartości. Ponieważ wykonanie w sesji jest zawsze sekwencyjnie, nie ma mowy o współbieżności.

JEŚLI ustawisz informacje kontekstowe w procedurze, każdy wyzwalacz, który zostanie następnie wykonany w tej sesji, zobaczy nowo ustawioną wartość informacji kontekstowych. Ustawienie wartości identyfikatora użytkownika w informacji kontekstowej, jak proponujesz, i użycie jej w wyzwalaczach jest typowym przykładem użycia informacji kontekstowych i jest całkowicie bezpieczne w odniesieniu do współbieżności, ponieważ w zasadzie nie ma o czym mówić. Jeśli planujesz ustawić informacje kontekstowe w procedurze składowanej, a następnie polegać na nich w wyzwalaczu, który jest uruchamiany z powodu usunięć, które występują we wspomnianej procedurze, to Twoja partia jeszcze się nie zakończyła, więc zgodnie z połączonym artykułem pobierasz informacje o conetxt z sys.dm_exec_requests DMV lub z CONTEXT_INFO() funkcjonować. Nie zostanie jeszcze umieszczony w sys.dm_exec_sessions , co może się zdarzyć tylko po wyjściu z procedury składowanej i zakończeniu każdego innego wywołania w partii T-SQL wysłanej do serwera ("żądanie").



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie programu SQL Server w celu znalezienia wartości CHI-SQUARE (nie działa)

  2. Ograniczenie klauzuli IN w SQL Server

  3. Czy zapytania ANSI JOIN i inne niż ANSI JOIN będą działać inaczej?

  4. Dodaj konto pocztowe bazy danych do profilu (T-SQL)

  5. Instrukcja CASE w klauzuli WHERE w SQL Server 2008