Freigeben über


sp_set_session_context (Transact-SQL)

Gilt für: SQL Server 2016 (13.x) und höher Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric In Microsoft Fabric

Legt ein Schlüssel-Wert-Paar im Sitzungskontext fest.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @key = ] N'key'

Der festgelegte Schlüssel. @key ist "sysname" ohne Standard. Die maximale Schlüssellänge beträgt 128 Byte.

[ @value = ] 'value'

Der Wert des angegebenen Schlüssels. @value ist sql_variant, mit einem Standardwert von NULL. Durch Festlegen eines Werts wird NULL der Arbeitsspeicher freigegeben. Die maximale Größe beträgt 8.000 Bytes.

[ @read_only = ] read_only

Ein Kennzeichen, das angibt, ob der angegebene Schlüssel in der logischen Verbindung geändert werden kann. @read_only ist bit mit einem Standardwert von 0.

  • Wenn 1der Wert für den angegebenen Schlüssel bei dieser logischen Verbindung nicht mehr geändert werden kann.
  • Wenn 0der Wert geändert werden kann.

Berechtigungen

Alle Benutzer*innen können einen Sitzungskontext für ihre Sitzung festlegen.

Bemerkungen

Wie bei anderen gespeicherten Prozeduren auch können als Parameter nur Literale und Variablen (keine Ausdrücke oder Funktionsaufrufe) übergeben werden.

Die Gesamtgröße des Sitzungskontexts ist auf 1 MB begrenzt. Wenn Sie einen Wert festlegen, der dazu führt, dass dieser Grenzwert überschritten wird, tritt bei der Anweisung ein Fehler auf. Sie können die gesamte Arbeitsspeicherauslastung mithilfe von sys.dm_os_memory_objects (Transact-SQL) überwachen.

Sie können die gesamte Speicherauslastung überwachen, indem Sie sys.dm_os_memory_cache_counters (Transact-SQL) wie folgt abfragen:

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

Beispiele

A. Festlegen und Zurückgeben eines Sitzungskontexts

Das folgende Beispiel zeigt, wie sie den Kontextschlüssel einer Sitzung mit dem Namen language", mit dem Wert von English" , festlegen und zurückgeben.

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

Das folgende Beispiel veranschaulicht wird die Verwendung des optionalen Schreibschutzflags.

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

B. Festlegen und Zurückgeben einer Clientkorrelations-ID

Das folgende Beispiel zeigt, wie Sie einen Sitzungskontextschlüssel mit dem Namen client_correlation_idfestlegen und abrufen, mit dem Wert von 12323ad.

  1. Legen Sie den -Wert fest.

    EXEC sp_set_session_context 'client_correlation_id', '12323ad';
    
  2. Rufen Sie den Wert ab.

    SELECT SESSION_CONTEXT(N'client_correlation_id');