sp_bindsession (Transact-SQL)

适用于:SQL Server

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

重要

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

Transact-SQL 语法约定

语法

sp_bindsession { 'bind_token' | NULL }

参数

bind_token

标识最初通过使用 sp_getbindtoken 或 Open Data Services srv_getbindtoken 函数获取的事务的令牌。 bind_token是 varchar(255)。

返回代码值

0(成功)或 1(失败)。

注解

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

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

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

sp_bindsession 如果使用未处于活动状态的令牌,则失败并出现错误。

使用sp_bindsession而不指定bind_token或通过传入NULLbind_token来取消绑定会话。

权限

要求 公共 角色具有成员身份。

示例

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

注意

示例中所示的绑定令牌是在执行之前通过执行sp_getbindtokensp_bindsession获取的。

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