sp_getbindtoken (Transact-SQL)
Retourne un identificateur unique pour la transaction. Il s'agit d'une chaîne utilisée pour lier des sessions à l'aide de sp_bindsession.
Important
Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft 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 MARS (Multiple Active Results Sets) ou des transactions distribuées.Pour plus d'informations, consultez Utilisation de MARS (Multiple Active Result Sets).
S'applique à : SQL Server (SQL Server 2008 via la version actuelle). |
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 de type varchar(255) et n'a pas de valeur par défaut.
Valeurs des codes de retour
Aucune
Jeux de résultats
Aucun
Notes
sp_getbindtoken retourne un jeton valide uniquement lorsque la procédure stockée est exécutée dans 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 dans une transaction ouverte, SQL Server retourne le même jeton. Par exemple :
USE AdventureWorks2012;
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 n'est valide que localement dans chaque instance du moteur de base de données et ne peut pas être partagé par plusieurs instances.
Pour obtenir et passer un jeton de liaison, vous devez exécuter sp_getbindtoken avant d'exécuter sp_bindsession afin de partager le même espace de verrouillage. Si vous disposez d'un jeton de liaison, sp_bindsession est exécuté correctement.
Notes
Nous vous conseillons d'utiliser l'interface de programmation d'applications (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 l'ensemble des résultats.
Token
----------------------------------------------------------
\0]---5^PJK51bP<1F<-7U-]ANZ