Delen via


SET CONTEXT_INFO (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric

Koppelt tot 128 bytes aan binaire informatie aan de huidige sessie of verbinding.

Transact-SQL syntaxis-conventies

Syntaxis

  
SET CONTEXT_INFO { binary_str | @binary_var }  

Arguments

binary_str

Is een binaire constante, of een constante die impliciet omgezet kan worden naar binair, om te associëren met de huidige sessie of verbinding.

@binary_var

Is een varbinaire of binaire variabele die een contextwaarde bevat om te koppelen aan de huidige sessie of verbinding?

Opmerkingen

Zoals alle SET-statements beïnvloedt SET CONTEXT_INFO de huidige sessie. De voorkeursmethode om de contextinformatie voor de huidige sessie op te halen is door de functie CONTEXT_INFO te gebruiken. Sessiecontextinformatie wordt ook opgeslagen in de context_info kolommen in de volgende systeemweergaven:

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

SET CONTEXT_INFO kan niet worden gespecificeerd in een door de gebruiker gedefinieerde functie. Je kunt geen NULL-waarde aan SET CONTEXT_INFO geven omdat de views met de waarden geen NULL-waarden toestaan.

SET CONTEXT_INFO accepteert geen expressies anders dan constanten of variabelennamen. Om de contextinformatie te zetten als het resultaat van een functieaanroep, moet je eerst het resultaat van de functieaanroep opnemen in een binaire of varbinaire variabele.

Wanneer je SET CONTEXT_INFO uitvoert in een opgeslagen procedure of trigger, blijft de nieuwe waarde set voor de contextinformatie behouden nadat de opgeslagen procedure of trigger is voltooid.

Voorbeelden

Eén. Stel contextinformatie in door een constante te gebruiken

Het volgende voorbeeld demonstreert SET CONTEXT_INFO door de waarde in te stellen en de resultaten weer te geven. Queryen sys.dm_exec_sessions vereist SELECT- en VIEW SERVER STATE-permissies, terwijl het gebruik van de CONTEXT_INFO-functie dat niet doet.

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

B. Stel contextinformatie in door gebruik te maken van een functie

Het volgende voorbeeld laat zien dat de uitvoer van een functie wordt gebruikt om de contextwaarde te bepalen, waarbij de waarde van de functie eerst in een binaire variabele moet worden geplaatst.

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