sp_bindsession (Transact-SQL)
S'applique à : SQL Server
Lie ou dissocie une session à d’autres sessions dans la même instance de SQL Server Moteur de base de données. Les sessions de liaison permettent à deux sessions ou plus de participer à la même transaction et de partager des verrous jusqu’à ce qu’une ou COMMIT TRANSACTION
plusieurs ROLLBACK TRANSACTION
sessions soit émise.
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) dans SQL Server Native Client.
Conventions de la syntaxe Transact-SQL
Syntaxe
sp_bindsession { 'bind_token' | NULL }
Arguments
'bind_token'
Jeton qui identifie la transaction obtenue à l’origine à l’aide sp_getbindtoken
ou à la fonction Open Data Services srv_getbindtoken
. bind_token est varchar(255).
Valeurs des codes de retour
0
(réussite) or 1
(échec).
Notes
Deux sessions liées ne partage qu'une transaction et des verrous. Chaque session conserve son propre niveau d’isolation et la définition d’un nouveau niveau d’isolation sur une session n’affecte pas le niveau d’isolation de l’autre session. Chaque session reste identifiée par son compte de sécurité et peut uniquement accéder aux ressources de base de données auxquelles le compte est autorisé.
sp_bindsession
utilise un jeton de liaison pour lier deux sessions clientes existantes ou plus. Ces sessions clientes doivent se trouver sur la même instance de l’Moteur de base de données à partir de laquelle le jeton de liaison a été obtenu. Une session est un client exécutant une commande. Les sessions de base de données liées partagent une transaction et un espace de verrouillage.
Un jeton de liaison obtenu à partir d’une instance du Moteur de base de données ne peut pas être utilisé pour une session cliente connectée à une autre instance, même pour les transactions DTC. Un jeton de liaison est valide uniquement localement à l’intérieur de chaque instance et ne peut pas être partagé entre plusieurs instances. Pour lier des sessions clientes sur une autre instance du Moteur de base de données, vous devez obtenir un jeton de liaison différent en exécutant sp_getbindtoken
.
sp_bindsession
échoue avec une erreur si elle utilise un jeton qui n’est pas actif.
Dissocié d’une session à l’aide sp_bindsession
de bind_token ou en passant NULL
bind_token.
autorisations
Nécessite l'appartenance au rôle public .
Exemples
L'exemple suivant associe le jeton de liaison spécifié à la session active.
Remarque
Le jeton de liaison indiqué dans l’exemple a été obtenu en exécutant sp_getbindtoken
avant l’exécution sp_bindsession
.
USE master;
GO
EXEC sp_bindsession 'BP9---5---->KB?-V'<>1E:H-7U-]ANZ';
GO