SET CONTEXT_INFO (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Kopplar upp till 128 byte binär information till den aktuella sessionen eller anslutningen.

Transact-SQL syntaxkonventioner

Syntax

  
SET CONTEXT_INFO { binary_str | @binary_var }  

Arguments

binary_str

Är en binär konstant, eller en konstant som implicit kan konverteras till binär, att associera med den aktuella sessionen eller anslutningen.

@binary_var

Är en varbinär eller binär variabel som håller ett kontextvärde att associera med den aktuella sessionen eller anslutningen.

Anmärkningar

Som alla SET-satser påverkar SET CONTEXT_INFO den aktuella sessionen. Det föredragna sättet att hämta kontextinformationen för den aktuella sessionen är att använda funktionen CONTEXT_INFO. Sessionskontextinformation lagras också i kolumnerna context_info i följande systemvyer:

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

SET CONTEXT_INFO kan inte specificeras i en användardefinierad funktion. Du kan inte ange ett NULL-värde till SET CONTEXT_INFO eftersom vyerna som innehåller värdena inte tillåter NULL-värden.

SET CONTEXT_INFO accepterar inte uttryck utöver konstanter eller variabelnamn. För att sätta kontextinformationen till resultatet av ett funktionsanrop måste du först inkludera resultatet av funktionsanropet i en binär eller varbinär variabel.

När du utför SET-CONTEXT_INFO i en lagrad propud eller trigger, till skillnad från andra SET-satser, kvarstår det nya värdet set för kontextinformationen efter att den lagrade proceduren eller triggern är klar.

Examples

A. Sätt kontextinformation genom att använda en konstant

Följande exempel demonstrerar SET CONTEXT_INFO genom att sätta värdet och visa resultaten. Att söka sys.dm_exec_sessions kräver behörigheter SELECT och VIEW SERVER STATE, medan användning av funktionen CONTEXT_INFO inte gör det.

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

B. Sätt kontextinformation genom att använda en funktion

Följande exempel visar att man använder utdata från en funktion för att sätta kontextvärdet, där värdet från funktionen först måste placeras i en binär variabel.

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