sp_bindsession (Transact-SQL)

将会话绑定到同一 SQL Server 数据库引擎实例中的其他会话或取消它与这些会话的绑定。绑定会话允许两个或更多的会话参与同一事务并共享锁,直到发出 ROLLBACK TRANSACTION 或 COMMIT TRANSACTION 命令。

有关绑定会话的详细信息,请参阅使用绑定会话

重要说明重要提示

后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改用多个活动结果集 (MARS) 或分布式事务。有关详细信息,请参阅使用多个活动的结果集 (MARS)分布式事务(数据库引擎)

主题链接图标Transact-SQL 语法约定

语法

sp_bindsession { 'bind_token' | NULL }

参数

  • 'bind_token'
    标识事务的令牌,该令牌最初通过使用 sp_getbindtoken 或开放式数据服务 srv_getbindtoken 函数获得。bind_token的数据类型为 varchar(255)。

返回代码值

0(成功)或 1(失败)

注释

绑定的两个会话只共享事务和锁。每个会话均保留自身的隔离级别,在一个会话上设置新的隔离级别不会影响另一个会话的隔离级别。每个会话仍由其安全帐户标识,且只能访问已授权该帐户访问的数据库资源。

sp_bindsession 使用绑定令牌绑定两个或多个现有客户端会话。这些客户端会话必须位于获得绑定令牌的同一数据库引擎实例中。会话是执行命令的客户端。绑定数据库会话共享事务和锁空间。

从一个数据库引擎实例获得的绑定令牌不能用于连接到另一实例的客户端会话,甚至对 DTC 事务也是如此。绑定令牌仅在每个实例的本地有效,不能由多个实例共享。若要绑定另一数据库引擎实例上的客户端会话,必须通过执行 sp_getbindtoken 获得不同的绑定令牌。

如果使用非活动令牌,则 sp_bindsession 将失败并出现错误。

通过不指定 bind_token,直接使用 sp_bindsession,或在 bind_token 中传递 NULL 来取消会话绑定。

权限

要求具有 public 角色的成员身份。

示例

以下示例将指定的绑定令牌绑定到当前会话。

注意注意

通过先执行 sp_getbindtoken 然后执行 sp_bindsession,可以获得以下示例中所显示的绑定令牌。

USE master;
GO
EXEC sp_bindsession 'BP9---5---->KB?-V'<>1E:H-7U-]ANZ';
GO