Sdílet prostřednictvím


sp_set_session_context (Transact-SQL)

platí pro: SQL Server 2016 (13.x) a novější Azure SQL Databaseazure SQL Managed Instancekoncový bod azure Synapse AnalyticsSQL Analytics v Microsoft FabricWarehouse v Microsoft Fabric

Nastaví pár klíč-hodnota v kontextu relace.

Transact-SQL konvence syntaxe

Syntax

sp_set_session_context
    [ @key = ] N'key'
    , [ @value = ] 'value'
    [ , [ @read_only = ] read_only ]
[ ; ]

Argumenty

Důležitý

Argumenty rozšířených uložených procedur musí být zadány v určitém pořadí, jak je popsáno v části Syntaxe. Pokud jsou parametry zadány mimo pořadí, dojde k chybové zprávě.

[ @key = ] Klíč N''

Klíč je nastavený. @key sysname bez výchozího nastavení. Maximální velikost klíče je 128 bajtů.

[ @value = ] 'hodnota'

Hodnota zadaného klíče. @value je sql_variants výchozím NULL. Nastavení hodnoty NULL uvolní paměť. Maximální velikost je 8 000 bajtů.

[ @read_only = ] read_only

Příznak označující, jestli se zadaný klíč dá změnit v logickém připojení. @read_only je bit s výchozím 0.

  • Pokud 1, hodnota zadaného klíče se u tohoto logického připojení nedá znovu změnit.
  • Pokud 0, můžete hodnotu změnit.

Dovolení

Každý uživatel může pro svoji relaci nastavit kontext relace.

Poznámky

Stejně jako jiné uložené procedury lze jako parametry předat pouze literály a proměnné (nikoli výrazy nebo volání funkce).

Celková velikost kontextu relace je omezená na 1 MB. Pokud nastavíte hodnotu, která způsobí překročení tohoto limitu, příkaz selže. V sys.dm_os_memory_objectsmůžete monitorovat celkové využití paměti .

Celkové využití paměti můžete monitorovat dotazováním sys.dm_os_memory_cache_counters následujícím způsobem:

SELECT * FROM sys.dm_os_memory_cache_counters WHERE type = 'CACHESTORE_SESSION_CONTEXT';

Příklady

A. Nastavení a vrácení kontextu relace

Následující příklad ukazuje, jak nastavit a potom vrátit kontextový klíč relace s názvem language, s hodnotou English.

EXEC sys.sp_set_session_context @key = N'language', @value = 'English';
SELECT SESSION_CONTEXT(N'language');

Následující příklad ukazuje použití volitelného příznaku jen pro čtení.

EXEC sys.sp_set_session_context @key = N'user_id', @value = 4, @read_only = 1;

B. Nastavení a vrácení ID korelace klienta

Následující příklad ukazuje, jak nastavit a načíst kontextový klíč relace s názvem client_correlation_id, s hodnotou 12323ad.

  1. Nastavte hodnotu.

    EXEC sp_set_session_context 'client_correlation_id', '12323ad';
    
  2. Načtěte hodnotu.

    SELECT SESSION_CONTEXT(N'client_correlation_id');