sp_set_session_context (Transact-SQL)
van toepassing op: SQL Server 2016 (13.x) en hoger
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL Analytics-eindpunt in Microsoft Fabric
Warehouse 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 language
instelt 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_id
instelt en ophaalt, met een waarde van 12323ad
.
Stel de waarde in.
EXEC sp_set_session_context 'client_correlation_id', '12323ad';
Haal de waarde op.
SELECT SESSION_CONTEXT(N'client_correlation_id');