返回事務(wù)的唯一標(biāo)識符。 該唯一標(biāo)識符被引用為綁定令牌。sp_getbindtoken 返回用于在客戶端之間共享事務(wù)的字符串表示法。
sp_getbindtoken [@out_token =] 'return_value' OUTPUT [, @for_xp_flag]
[@out_token =] 'return_value'
是用于共享事務(wù)的令牌。return_value 的數(shù)據(jù)類型為 varchar(255),沒有默認(rèn)值。
@for_xp_flag
常量。如果等于 1,則創(chuàng)建一個綁定令牌,該令牌可被傳遞給擴(kuò)展存儲過程以回調(diào)服務(wù)器。
無
無
在 Microsoft SQL Server 2000 中,sp_getbindtoken 僅當(dāng)在活動事務(wù)內(nèi)部執(zhí)行該存儲過程時才返回有效令牌。 否則,SQL Server 將返回一個錯誤信息。例如:
說明 在 SQL Server 7.0 中,即使在活動事務(wù)外部執(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.
當(dāng) sp_getbindtoken 用于在打開的事務(wù)內(nèi)登記分布式事務(wù)連接時,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 一起使用,將新會話綁定到同一事務(wù)上。綁定令牌僅在每個 SQL Server 的本地機(jī)上有效且不能在多個 SQL Server 實例中共享。
若要獲得并傳遞綁定令牌,則必須在運(yùn)行 sp_bindsession 之前運(yùn)行 sp_getbindtoken,以共享同一鎖空間。如果獲得綁定令牌,則 sp_bindsession 可正確運(yùn)行。
說明 建議使用 srv_getbindtoken 開放式數(shù)據(jù)服務(wù) API 來獲得從擴(kuò)展存儲過程處使用的綁定令牌。
執(zhí)行權(quán)限默認(rèn)授予 public 角色。
下面的示例獲得綁定令牌并顯示綁定令牌名稱。
DECLARE @bind_token varchar(255)
BEGIN TRAN
EXECUTE sp_getbindtoken @bind_token OUTPUT
SELECT @bind_token AS Token
下面是結(jié)果集:
Token
----------------------------------------------------------
\0]---5^PJK51bP<1F<-7U-]ANZ
下面的示例指定用于向服務(wù)器回叫的常量。
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.
相關(guān)文章