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)