sp_set_session_context (Transact-SQL)
Dotyczy: programu SQL Server 2016 (13.x) i nowszych
Azure SQL Database
Azure SQL Managed Instance
punkt końcowy analizy SQL usługi Azure Synapse Analytics
w usłudze Microsoft Fabric
Warehouse w usłudze Microsoft Fabric
Ustawia parę klucz-wartość w kontekście sesji.
Transact-SQL konwencje składni
Składnia
sp_set_session_context
[ @key = ] N'key'
, [ @value = ] 'value'
[ , [ @read_only = ] read_only ]
[ ; ]
Argumenty
Ważny
Argumenty dla rozszerzonych procedur składowanych należy wprowadzić w określonej kolejności zgodnie z opisem w sekcji składni. Jeśli parametry są wprowadzane poza kolejnością, wystąpi komunikat o błędzie.
[ @key = ] N'klucz"
Ustawiany klucz. @key jest nazwa_systemu bez wartości domyślnej. Maksymalny rozmiar klucza to 128 bajtów.
[ @value = ] 'wartość'
Wartość określonego klucza.
@value jest sql_variantz wartością domyślną NULL
. Ustawienie wartości NULL
zwalnia pamięć. Maksymalny rozmiar to 8000 bajtów.
[ @read_only = ] read_only
Flaga wskazująca, czy określony klucz można zmienić w połączeniu logicznym.
@read_only jest bitową z wartością domyślną 0
.
- Jeśli
1
, wartość określonego klucza nie może zostać ponownie zmieniona w tym połączeniu logicznym. - Jeśli
0
, można zmienić wartość.
Uprawnienia
Każdy użytkownik może ustawić kontekst sesji dla swojej sesji.
Uwagi
Podobnie jak inne procedury składowane, jako parametry mogą być przekazywane tylko literały i zmienne (nie wyrażenia ani wywołania funkcji).
Całkowity rozmiar kontekstu sesji jest ograniczony do 1 MB. Jeśli ustawisz wartość, która spowoduje przekroczenie tego limitu, instrukcja zakończy się niepowodzeniem. Ogólne użycie pamięci można monitorować w sys.dm_os_memory_objects.
Ogólne użycie pamięci można monitorować, wykonując zapytanie sys.dm_os_memory_cache_counters w następujący sposób:
SELECT * FROM sys.dm_os_memory_cache_counters WHERE type = 'CACHESTORE_SESSION_CONTEXT';
Przykłady
A. Ustawianie i zwracanie kontekstu sesji
W poniższym przykładzie pokazano, jak ustawić, a następnie zwrócić klucz kontekstu sesji o nazwie language
, z wartością English
.
EXEC sys.sp_set_session_context @key = N'language', @value = 'English';
SELECT SESSION_CONTEXT(N'language');
W poniższym przykładzie pokazano użycie opcjonalnej flagi tylko do odczytu.
EXEC sys.sp_set_session_context @key = N'user_id', @value = 4, @read_only = 1;
B. Ustawianie i zwracanie identyfikatora korelacji klienta
W poniższym przykładzie pokazano, jak ustawić i pobrać klucz kontekstu sesji o nazwie client_correlation_id
z wartością 12323ad
.
Ustaw wartość.
EXEC sp_set_session_context 'client_correlation_id', '12323ad';
Pobierz wartość.
SELECT SESSION_CONTEXT(N'client_correlation_id');