sp_bindsession (Transact-SQL)
Lie une session à d'autres sessions ou la détache de celles-ci dans la même instance du moteur de base de données SQL Server. La liaison de sessions permet à deux sessions ou plus de participer à la même transaction et d'en partager les verrous jusqu'à l'émission d'une instruction ROLLBACK TRANSACTION ou COMMIT TRANSACTION.
Pour plus d'informations sur les sessions liées, consultez Utilisation de sessions associées.
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 MARS (Multiple Active Results Sets) ou les transactions distribuées à la place. Pour plus d'informations, consultez Utilisation de MARS (Multiple Active Result Sets) ou Transactions distribuées (moteur de base de données).
Syntaxe
sp_bindsession { 'bind_token' | NULL }
Arguments
- 'bind_token'
Jeton qui identifie la transaction obtenue à l'origine à l'aide de sp_getbindtoken ou de la fonction srv_getbindtoken Open Data Services. bind_token est de type varchar(255).
Valeurs des codes de retour
0 (succès) 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 de l'autre. Chaque session reste identifiée par son compte de sécurité et ne peut accéder qu'aux ressources de la base de données auxquelles le compte est autorisé à accéder.
L'option p_bindsession utilise un jeton de liaison pour lier deux ou plusieurs sessions clientes existantes. Ces sessions clientes doivent être hébergées sur la même instance du moteur de base de données qui a délivré le jeton de liaison. 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 appartenant à une autre instance, même pour une transaction DTC. Un jeton de liaison n'est valide que localement dans chaque instance et ne peut pas être partagé par plusieurs instances. Pour lier des sessions clientes hébergées 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.
L'exécution de la procédure stockée sp_bindsession se traduit par une erreur si elle utilise un jeton inactif.
Pour détacher une session, utilisez sp_bindsession sans spécifier bind_token ou passez NULL dans bind_token.
Autorisations
L'utilisateur doit appartenir au rôle public.
Exemples
L'exemple suivant associe le jeton de liaison spécifié à la session active.
Notes
Le jeton de liaison illustré dans cet exemple a été obtenu en exécutant sp_getbindtoken avant sp_bindsession.
USE master;
GO
EXEC sp_bindsession 'BP9---5---->KB?-V'<>1E:H-7U-]ANZ';
GO