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 plusieurs jeux de résultats actifs (MARS) 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) ou 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