Dela via


sp_set_session_context (Transact-SQL)

gäller för: SQL Server 2016 (13.x) och senare Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-analysslutpunkt i Microsoft FabricWarehouse i Microsoft Fabric

Anger ett nyckel/värde-par i sessionskontexten.

Transact-SQL syntaxkonventioner

Syntax

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

Argument

Viktig

Argument för utökade lagrade procedurer måste anges i den specifika ordning som beskrivs i avsnittet Syntax. Om parametrarna anges i fel ordning visas ett felmeddelande.

[ @key = ] Nnyckel"

Nyckeln som anges. @key är sysname utan standard. Den maximala nyckelstorleken är 128 byte.

[ @value = ]värde

Värdet för den angivna nyckeln. @value är sql_variant, med standardvärdet NULL. Om du anger värdet NULL frigörs minnet. Den maximala storleken är 8 000 byte.

[ @read_only = ] read_only

En flagga som anger om den angivna nyckeln kan ändras för den logiska anslutningen. @read_only är bit med standardvärdet 0.

  • Om 1kan värdet för den angivna nyckeln inte ändras igen för den här logiska anslutningen.
  • Om 0kan värdet ändras.

Behörigheter

Alla användare kan ange en sessionskontext för sin session.

Anmärkningar

Precis som andra lagrade procedurer kan endast literaler och variabler (inte uttryck eller funktionsanrop) skickas som parametrar.

Sessionskontextens totala storlek är begränsad till 1 MB. Om du anger ett värde som gör att den här gränsen överskrids misslyckas instruktionen. Du kan övervaka den totala minnesanvändningen i sys.dm_os_memory_objects.

Du kan övervaka den totala minnesanvändningen genom att fråga sys.dm_os_memory_cache_counters på följande sätt:

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

Exempel

A. Ange och returnera en sessionskontext

I följande exempel visas hur du anger och sedan returnerar en sessions kontextnyckel med namnet language, med värdet English.

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

I följande exempel visas hur den valfria skrivskyddade flaggan används.

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

B. Ange och returnera ett klientkorrelations-ID

I följande exempel visas hur du anger och hämtar en sessionskontextnyckel med namnet client_correlation_id, med värdet 12323ad.

  1. Ange värdet.

    EXEC sp_set_session_context 'client_correlation_id', '12323ad';
    
  2. Hämta värdet.

    SELECT SESSION_CONTEXT(N'client_correlation_id');