sp_getbindtoken (Transact-SQL)
S'applique à : SQL Server
Retourne un identificateur unique pour la transaction. Il s'agit en fait d'une chaîne utilisée pour lier des sessions à l'aide de sp_bindsession.
Important
Cette fonctionnalité sera supprimée dans une version future de SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Utilisez plutôt plusieurs jeux de résultats actifs (MARS) ou des transactions distribuées. Pour plus d’informations, consultez Utilisation de MARS (Multiple Active Result Sets).
Conventions de la syntaxe Transact-SQL
Syntaxe
sp_getbindtoken [@out_token =] 'return_value' OUTPUT
Arguments
[@out_token= ]'return_value'
Jeton à utiliser pour lier les sessions. return_value est varchar(255) sans valeur par défaut.
Codet de retour
Aucun
Jeux de résultats
None
Notes
sp_getbindtoken retourne un jeton valide uniquement lorsque la procédure stockée est exécutée à l’intérieur d’une transaction active. Sinon, le Moteur de base de données retourne un message d’erreur. Par exemple :
-- Declare a variable to hold the bind token.
-- No active transaction.
DECLARE @bind_token varchar(255);
-- Trying to get the bind token returns an error 3921.
EXECUTE sp_getbindtoken @bind_token OUTPUT;
Server: Msg 3921, Level 16, State 1, Procedure sp_getbindtoken, Line 4
Cannot get a transaction token if there is no transaction active.
Reissue the statement after a transaction has been started.
Lorsque sp_getbindtoken est utilisé pour inscrire une connexion de transaction distribuée à l’intérieur d’une transaction ouverte, SQL Server retourne le même jeton. Par exemple :
USE AdventureWorks2022;
GO
DECLARE @bind_token varchar(255);
BEGIN TRAN;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token;
BEGIN DISTRIBUTED TRAN;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token;
Les deux instructions SELECT
retournent le même jeton :
Token
-----
PKb'gN5<9aGEedk_16>8U=5---/5G=--
(1 row(s_) affected)
Token
-----
PKb'gN5<9aGEedk_16>8U=5---/5G=--
(1 row(s_) affected)
Le jeton de liaison peut être utilisé avec sp_bindsession afin de lier de nouvelles sessions à la même transaction. Le jeton de liaison est valide uniquement localement à l’intérieur de chaque instance du Moteur de base de données et ne peut pas être partagé entre plusieurs instances.
Pour obtenir et passer un jeton de liaison, vous devez exécuter sp_getbindtoken avant d'utiliser sp_bindsession afin de partager le même espace de verrouillage. Si vous disposez d'un jeton de liaison, sp_bindsession sera exécuté correctement.
Remarque
Nous vous conseillons d'utiliser l'API Open Data Services srv_getbindtoken pour obtenir un jeton de liaison susceptible d'être utilisé à partir d'une procédure stockée étendue.
autorisations
Nécessite l'appartenance au rôle public.
Exemples
L'exemple suivant demande un jeton de liaison et affiche son nom.
DECLARE @bind_token varchar(255);
BEGIN TRAN;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token;
Voici le jeu de résultats obtenu.
Token
----------------------------------------------------------
\0]---5^PJK51bP<1F<-7U-]ANZ
Voir aussi
sp_bindsession (Transact-SQL)
Procédures stockées système (Transact-SQL)
srv_getbindtoken (API de procédure stockée étendue)
Commentaires
https://aka.ms/ContentUserFeedback.
Prochainement : Tout au long de l'année 2024, nous supprimerons progressivement les GitHub Issues en tant que mécanisme de retour d'information pour le contenu et nous les remplacerons par un nouveau système de retour d'information. Pour plus d’informations, voir:Soumettre et afficher des commentaires pour