sp_set_session_context (Transact-SQL)

S’applique à : SQL Server 2016 (13.x) et versions ultérieuresAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPoint de terminaison analytique SQL dans Microsoft FabricEntrepôt dans Microsoft Fabric

Définit une paire clé-valeur dans le contexte de session.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_set_session_context
    [ @key = ] N'key'
    , [ @value = ] 'value'
    [ , [ @read_only = ] read_only ]
[ ; ]

Arguments

[ @key = ] N’key'

Clé définie. @key est sysname sans valeur par défaut. La taille maximale de clé est de 128 octets.

[ @value = ] 'value'

Valeur de la clé spécifiée. @value est sql_variant, avec la valeur par défaut NULL. La définition d’une valeur de libération de NULL la mémoire. La taille maximale est de 8 000 octets.

[ @read_only = ] read_only

Indicateur indiquant si la clé spécifiée peut être modifiée sur la connexion logique. @read_only est bit avec une valeur par défaut .0

  • Si 1, la valeur de la clé spécifiée ne peut pas être modifiée à nouveau sur cette connexion logique.
  • Si 0, la valeur peut être modifiée.

Autorisations

Tout utilisateur peut définir le contexte pour sa session.

Notes

Comme les autres procédures stockées, seuls les littéraux et les variables (et non les expressions ou les appels de fonction) peuvent être passés en tant que paramètres.

La taille totale du contexte de session est limitée à 1 Mo. Si vous définissez une valeur qui entraîne le dépassement de cette limite, l’instruction échoue. Vous pouvez surveiller l’utilisation globale de la mémoire dans sys.dm_os_memory_objects (Transact-SQL).

Vous pouvez surveiller l’utilisation globale de la mémoire en interrogeant sys.dm_os_memory_cache_counters (Transact-SQL) comme suit :

SELECT * FROM sys.dm_os_memory_cache_counters WHERE type = 'CACHESTORE_SESSION_CONTEXT';

Exemples

R. Définir et retourner un contexte de session

L’exemple suivant montre comment définir, puis retourner la clé de contexte d’une session nommée language, avec la valeur .English

EXEC sys.sp_set_session_context @key = N'language', @value = 'English';
SELECT SESSION_CONTEXT(N'language');

L’exemple suivant illustre l’utilisation de l’indicateur facultatif en lecture seule.

EXEC sys.sp_set_session_context @key = N'user_id', @value = 4, @read_only = 1;

B. Définir et retourner un ID de corrélation client

L’exemple suivant montre comment définir et récupérer une clé de contexte de session nommée client_correlation_id, avec une valeur de 12323ad.

  1. Définissez la valeur.

    EXEC sp_set_session_context 'client_correlation_id', '12323ad';
    
  2. Récupérez la valeur.

    SELECT SESSION_CONTEXT(N'client_correlation_id');