SET CONTEXT_INFO (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Ordnet bis zu 128 Byte an binären Informationen der aktuellen Sitzung oder Verbindung zu.

Transact-SQL-Syntaxkonventionen

Syntax

  
SET CONTEXT_INFO { binary_str | @binary_var }  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

binary_str

Eine Konstante vom Typ binary oder eine implizit in binary konvertierbare Konstante, die der aktuellen Sitzung oder Verbindung zugeordnet werden soll.

@binary_var

Eine Variable vom Typ varbinary oder binary mit einem Kontextwert, der der aktuellen Sitzung oder Verbindung zugeordnet werden soll.

Hinweise

Wie alle SET-Anweisungen wirkt sich SET CONTEXT_INFO auf die aktuelle Sitzung aus. Die bevorzugte Vorgehensweise zum Abrufen von Kontextinformationen für die aktuelle Sitzung stellt die Verwendung der CONTEXT_INFO-Funktion dar. Sitzungskontextinformationen werden auch in den Spalten in den context_info folgenden Systemansichten gespeichert:

  • sys.dm_exec_requests
  • sys.dm_exec_sessions
  • sys.sysprocesses (veraltet)

SET CONTEXT_INFO kann nicht in einer benutzerdefinierten Funktion angegeben werden. Sie können keinen NULL-Wert für SET CONTEXT_INFO angeben, da die Ansichten, die die Werte enthalten, keine NULL-Werte zulassen.

SET CONTEXT_INFO akzeptiert keine Ausdrücke, bei denen es sich nicht um Konstanten oder Variablennamen handelt. Wenn Sie die Kontextinformationen für das Ergebnis eines Funktionsaufrufes festlegen möchten, müssen Sie das Ergebnis des Funktionsaufrufes zuerst in einer Variablen vom Datentyp binary oder varbinary platzieren.

Wenn Sie SET CONTEXT_INFO in einer gespeicherten Prozedur oder einem Trigger ausführen, ist im Gegensatz zu anderen SET-Anweisungen der neue Wert für die Kontextinformationen persistent, nachdem die gespeicherte Prozedur oder der Trigger beendet wurden.

Beispiele

A. Festlegen von Kontextinformationen mithilfe einer Konstante

Im folgenden Beispiel wird die Verwendung von SET CONTEXT_INFO durch das Festlegen des Wertes und Anzeigen der Ergebnisse erläutert. Für abfragen sys.dm_exec_sessions sind SELECT- und VIEW SERVER STATE-Berechtigungen erforderlich, während die Verwendung der funktion CONTEXT_INFO nicht funktioniert.

SET CONTEXT_INFO 0x01010101;  
GO  
SELECT context_info   
FROM sys.dm_exec_sessions  
WHERE session_id = @@SPID;  
GO  

B. Festlegen von Kontextinformationen mithilfe einer Funktion

Im folgenden Beispiel wird die Verwendung der Ausgabe einer Funktion zum Festlegen des Kontextwertes gezeigt, wobei der Wert aus der Funktion zunächst in einer Variablen vom Typ binary platziert werden muss.

DECLARE @BinVar varbinary(128);  
SET @BinVar = CAST(REPLICATE( 0x20, 128 ) AS varbinary(128) );  
SET CONTEXT_INFO @BinVar;  
  
SELECT CONTEXT_INFO() AS MyContextInfo;  
GO