Dans SQL Server, vous pouvez utiliser le sp_set_session_context
procédure stockée pour définir des paires clé/valeur dans le contexte de la session.
Ces paires clé/valeur restent ensuite dans votre contexte de session jusqu'à la fermeture de votre connexion à SQL Server. Vous pouvez utiliser ces valeurs dans des procédures stockées et d'autres codes T-SQL tout au long de la durée de votre session.
Cette méthode de gestion de l'état de la session a été introduite pour la première fois dans SQL Server 2016. Avant cette version, vous deviez utiliser SET CONTEXT_INFO
, qui fournit un moyen similaire, mais beaucoup plus limité, de stocker l'état de la session.
Exemple 1 - Définir la valeur
Voici un exemple pour montrer comment utiliser sp_set_session_context
pour définir une paire clé/valeur.
EXEC sp_set_session_context @key = N'user_id', @value = 15;
Vous pouvez également utiliser la syntaxe suivante :
EXEC sp_set_session_context 'user_id', 15;
Il existe également un indicateur optionnel en lecture seule que vous pouvez définir. Voir ci-dessous pour un exemple.
Exemple 2 - Lire la valeur
Vous pouvez utiliser le SESSION_CONTEXT()
fonction pour lire la valeur d'une clé.
Voici comment lire la valeur que j'ai définie dans l'exemple précédent.
SELECT SESSION_CONTEXT(N'user_id') AS user_id;
Résultat :
+-----------+ | user_id | |-----------| | 15 | +-----------+
Exemple 3 - Mettre à jour la valeur
Vous pouvez mettre à jour la valeur, tant que vous ne l'avez pas spécifiée en lecture seule.
EXEC sp_set_session_context 'user_id', 73; SELECT SESSION_CONTEXT(N'user_id') AS user_id;
Résultat :
+-----------+ | user_id | |-----------| | 73 | +-----------+
Exemple 4 - Définir en lecture seule
Comme mentionné, il existe également un indicateur optionnel en lecture seule que vous pouvez définir. Une valeur de 1
le définit en lecture seule et une valeur de 0
(valeur par défaut) n'est pas en lecture seule.
Si vous le définissez en lecture seule, vous ne pourrez pas mettre à jour la valeur sans vous déconnecter et vous reconnecter à SQL Server.
Voici un exemple de définition de l'indicateur de lecture seule.
EXEC sp_set_session_context @key = N'user_id', @value = 15, @read_only = 1; SELECT SESSION_CONTEXT(N'user_id') AS user_id;
Résultat :
+-----------+ | user_id | |-----------| | 15 | +-----------+
Maintenant, essayons de changer la valeur :
EXEC sp_set_session_context 'user_id', 73;
Résultat :
Msg 15664, Level 16, State 1, Line 1 Cannot set key 'user_id' in the session context. The key has been set as read_only for this session.