Delen via


sp_set_session_context (Transact-SQL)

van toepassing op: SQL Server 2016 (13.x) en hoger Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL Analytics-eindpunt in Microsoft FabricWarehouse in Microsoft Fabric

Hiermee stelt u een sleutel-waardepaar in de sessiecontext in.

Transact-SQL syntaxisconventies

Syntaxis

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

Argumenten

Belangrijk

Argumenten voor uitgebreide opgeslagen procedures moeten worden ingevoerd in de specifieke volgorde, zoals beschreven in de sectie Syntaxis. Als de parameters niet in de volgorde zijn ingevoerd, treedt er een foutbericht op.

[ @key = ] N'sleutel'

De sleutel die wordt ingesteld. @key is sysname zonder standaardinstelling. De maximale sleutelgrootte is 128 bytes.

[ @value = ] 'waarde'

De waarde voor de opgegeven sleutel. @value is sql_variant, met een standaardwaarde van NULL. Als u een waarde van NULL instelt, wordt het geheugen vrijgemaakt. De maximale grootte is 8.000 bytes.

[ @read_only = ] read_only

Een vlag die aangeeft of de opgegeven sleutel kan worden gewijzigd op de logische verbinding. @read_only is bit met een standaardwaarde van 0.

  • Als 1, kan de waarde voor de opgegeven sleutel niet opnieuw worden gewijzigd voor deze logische verbinding.
  • Als 0, kan de waarde worden gewijzigd.

Machtigingen

Elke gebruiker kan een sessiecontext instellen voor de sessie.

Opmerkingen

Net als bij andere opgeslagen procedures kunnen alleen letterlijke waarden en variabelen (niet expressies of functie-aanroepen) worden doorgegeven als parameters.

De totale grootte van de sessiecontext is beperkt tot 1 MB. Als u een waarde instelt die ervoor zorgt dat deze limiet wordt overschreden, mislukt de instructie. U kunt het totale geheugengebruik in sys.dm_os_memory_objectsbewaken.

U kunt het totale geheugengebruik als volgt controleren door een query uit te voeren op sys.dm_os_memory_cache_counters:

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

Voorbeelden

Een. Een sessiecontext instellen en retourneren

In het volgende voorbeeld ziet u hoe u de contextsleutel van een sessie met de naam languageinstelt en retourneert, met een waarde van English.

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

In het volgende voorbeeld ziet u het gebruik van de optionele alleen-lezen vlag.

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

B. Een correlatie-id van een client instellen en retourneren

In het volgende voorbeeld ziet u hoe u een sessiecontextsleutel met de naam client_correlation_idinstelt en ophaalt, met een waarde van 12323ad.

  1. Stel de waarde in.

    EXEC sp_set_session_context 'client_correlation_id', '12323ad';
    
  2. Haal de waarde op.

    SELECT SESSION_CONTEXT(N'client_correlation_id');