Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2016 (13.x) und höhere Versionen
von Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics SQL Analytics-Endpunkt
in Microsoft Fabric
Warehouse in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric SQL-Datenbank in Microsoft Fabric
Gibt den Wert des angegebenen Schlüssels im aktuellen Sitzungskontext zurück. Der Wert wird mithilfe der sp_set_session_context-Prozedur festgelegt.
Transact-SQL-Syntaxkonventionen
Syntax
SESSION_CONTEXT(N'key')
Argumente
"Key"
Der Schlüssel des abzurufenden Werts. Der Schlüssel ist Sysname.
Rückgabetypen
sql_variant
Rückgabewert
Der wert, der dem angegebenen Schlüssel im Sitzungskontext zugeordnet ist oder NULL wenn kein Wert für diesen Schlüssel festgelegt ist.
Berechtigungen
Jeder Benutzer kann den Sitzungskontext für seine Sitzung lesen.
Bemerkungen
Das MARS-Verhalten für SESSION_CONTEXT' ähnelt dem von CONTEXT_INFO. Wenn ein MARS-Batch ein Schlüssel-Wert-Paar festlegt, wird der neue Wert nicht in anderen MARS-Batches in derselben Verbindung zurückgegeben, es sei denn, sie beginnen nach dem Batch, der den neuen Wert festgelegt hat. Wenn mehrere MARS-Batches für eine Verbindung aktiv sind, können Werte nicht als read_onlyfestgelegt werden. Dies verhindert Rennbedingungen und Unbestimmtheit darüber, welcher Wert gewinnt.
Beispiele
Im folgenden einfachen Beispiel wird der Sitzungskontextwert für den Schlüssel user_id auf 4 festgelegt und anschließend die SESSION_CONTEXT Funktion zum Abrufen des Werts verwendet.
EXECUTE sp_set_session_context 'user_id', 4;
SELECT SESSION_CONTEXT(N'user_id');
Bekannte Probleme
| Thema | Entdeckungsdatum | Der Status | Gelöst am |
|---|---|---|---|
Eine Zugriffsverletzungsverletzung (AV) kann unter bestimmten Bedingungen mit der SESSION_CONTEXT Funktion auftreten. Möglicherweise treten AV-Ausnahmen oder falsche Ergebnisse auf, wenn die SESSION_CONTEXT Funktion innerhalb eines parallelen Ausführungsplans ausgeführt wird, wenn die Sitzung zur Wiederverwendung zurückgesetzt wird.Ein Fix, der in SQL Server 2019 (15.x) CU 14 eingeführt wurde, um ein falsches Ergebnisproblem mit SESSION_CONTEXT parallelen Plänen zu beheben, wurde später gefunden, um AV-Ausnahmen unter bestimmten Bedingungen zu verursachen.Um dieses Problem zu beheben, können Sie die Ablaufverfolgungskennzeichnung 11042 als Start-, global- oder Sitzungsablaufverfolgungskennzeichnung aktivieren. Diese Ablaufverfolgungskennzeichnung erzwingt SESSION_CONTEXT die serielle Ausführung, hindert sie daran, an parallelen Abfrageplänen teilzunehmen.Gilt für: SQL Server 2019 (15.x) CU 14 und höhere Versionen. |
Januar 2022 | Problemumgehung bekannt |