返回事務的唯一標識符。 該唯一標識符被引用為綁定令牌。sp_getbindtoken 返回用于在客戶端之間共享事務的字符串表示法。
sp_getbindtoken [@out_token =] 'return_value' OUTPUT [, @for_xp_flag]
[@out_token =] 'return_value'
是用于共享事務的令牌。return_value 的數(shù)據(jù)類型為 varchar(255),沒有默認值。
@for_xp_flag
常量。如果等于 1,則創(chuàng)建一個綁定令牌,該令牌可被傳遞給擴展存儲過程以回調服務器。
無
無
在 Microsoft SQL Server 2000 中,sp_getbindtoken 僅當在活動事務內部執(zhí)行該存儲過程時才返回有效令牌。 否則,SQL Server 將返回一個錯誤信息。例如:
說明 在 SQL Server 7.0 中,即使在活動事務外部執(zhí)行該存儲過程,sp_getbindtoken 也返回有效令牌。下例工作于 SQL Server 7.0 環(huán)境中。
/*open a database*/
USE MYDB
GO
/*declare bind token; no active transaction*/
DECLARE @bind_token varchar(255)
/*return bind token*/
EXECUTE sp_getbindtoken @bind_token OUTPUT
/*get an error message*/
Server: Msg 3921, Level 16, State 1, Procedure sp_getbindtoken, Line 4
Cannot get a transaction token if there is no transaction active.
Reissue the statement after a transaction has been started.
當 sp_getbindtoken 用于在打開的事務內登記分布式事務連接時,SQL Server 2000 返回同一令牌。例如:
USE MYDB
DECLARE @bind_token varchar(255)
BEGIN TRAN
EXECUTE sp_getbindtoken @bind_token OUTPUT
SELECT @bind_token AS Token
BEGIN DISTRIBUTED TRAN
EXECUTE sp_getbindtoken @bind_token OUTPUT
SELECT @bind_token AS Token
/*returns the same token*/
Token
-----
PKb'gN5<9aGEedk_16>8U=5---/5G=--
(1 row(s_) affected)
Token
-----
PKb'gN5<9aGEedk_16>8U=5---/5G=--
(1 row(s_) affected)
綁定令牌可以與 sp_bindsession 一起使用,將新會話綁定到同一事務上。綁定令牌僅在每個 SQL Server 的本地機上有效且不能在多個 SQL Server 實例中共享。
若要獲得并傳遞綁定令牌,則必須在運行 sp_bindsession 之前運行 sp_getbindtoken,以共享同一鎖空間。如果獲得綁定令牌,則 sp_bindsession 可正確運行。
說明 建議使用 srv_getbindtoken 開放式數(shù)據(jù)服務 API 來獲得從擴展存儲過程處使用的綁定令牌。
執(zhí)行權限默認授予 public 角色。
下面的示例獲得綁定令牌并顯示綁定令牌名稱。
DECLARE @bind_token varchar(255)
BEGIN TRAN
EXECUTE sp_getbindtoken @bind_token OUTPUT
SELECT @bind_token AS Token
下面是結果集:
Token
----------------------------------------------------------
\0]---5^PJK51bP<1F<-7U-]ANZ
下面的示例指定用于向服務器回叫的常量。
DECLARE @bind_token varchar(255)
BEGIN TRAN
EXECUTE sp_getbindtoken @bind_token OUTPUT, 1
SELECT @bind_token AS Token
如果 @for_xp_flag 沒有使用常量,將返回下列錯誤信息:
Msg 214, Level 16, State 1, Server <server_name>, Procedure <procedure_name>, Line 5
Cannot convert parameter @for_xp_flag to type constant expected by procedure.
相關文章