Partager via


SET CONTEXT_INFO (Transact-SQL)

S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance

Associe jusqu'à 128 octets d'informations binaires à la session ou à la connexion actuelle.

Conventions de la syntaxe Transact-SQL

Syntaxe

  
SET CONTEXT_INFO { binary_str | @binary_var }  

Arguments

binary_str

Représente une constante binary ou une constante implicitement convertible en binary à associer à la session ou à la connexion active.

@binary_var

Représente une variable varbinary ou binary contenant une valeur de contexte à associer à la session ou à la connexion actuelle.

Notes

Comme toutes les instructions SET, SET CONTEXT_INFO affecte la session active. La méthode privilégiée pour récupérer les informations de contexte pour la session actuelle consiste à utiliser la fonction CONTEXT_INFO. Les informations de contexte de session sont également stockées dans les context_info colonnes des vues système suivantes :

  • sys.dm_exec_requests
  • sys.dm_exec_sessions
  • sys.sysprocesses (déconseillé)

SET CONTEXT_INFO ne peut pas être spécifié dans une fonction définie par l'utilisateur. Vous ne pouvez pas fournir une valeur NULL à SET CONTEXT_INFO, car les vues contenant les valeurs n’autorisent pas les valeurs NULL.

SET CONTEXT_INFO n'accepte pas les expressions autres que les constantes ou les noms de variables. Pour définir les informations de contexte associées au résultat d’un appel de fonction, vous devez d’abord inclure le résultat de l’appel de la fonction dans une variable binary ou varbinary.

Lorsque vous spécifiez SET CONTEXT_INFO dans une procédure stockée ou un déclencheur, contrairement aux autres instructions SET, la nouvelle valeur définie pour les informations de contexte est conservée à l'issue de l'exécution de la procédure stockée ou du déclencheur.

Exemples

R. Définir des informations de contexte à l’aide d’une constante

L'exemple ci-dessous illustre SET CONTEXT_INFO par la définition de la valeur et l'affichage des résultats. L’interrogation sys.dm_exec_sessions nécessite des autorisations SELECT et VIEW SERVER STATE, tandis que l’utilisation de la fonction CONTEXT_INFO ne le fait pas.

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

B. Définir des informations de contexte à l’aide d’une fonction

L’exemple ci-dessous illustre l’utilisation du résultat d’une fonction pour définir la valeur de contexte, où la valeur de la fonction doit être placée d’abord dans une variable binary.

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