Udostępnij za pośrednictwem


sp_set_session_context (Transact-SQL)

Dotyczy: programu SQL Server 2016 (13.x) i nowszych Azure SQL DatabaseAzure SQL Managed Instancepunkt końcowy analizy SQL usługi Azure Synapse Analyticsw usłudze Microsoft FabricWarehouse 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_idz wartością 12323ad.

  1. Ustaw wartość.

    EXEC sp_set_session_context 'client_correlation_id', '12323ad';
    
  2. Pobierz wartość.

    SELECT SESSION_CONTEXT(N'client_correlation_id');