返回事務(wù)的唯一標(biāo)識(shí)符。 該唯一標(biāo)識(shí)符被引用為綁定令牌。sp_getbindtoken 返回用于在客戶端之間共享事務(wù)的字符串表示法。
sp_getbindtoken [@out_token =] 'return_value' OUTPUT [, @for_xp_flag]
[@out_token =] 'return_value'
是用于共享事務(wù)的令牌。return_value 的數(shù)據(jù)類型為 varchar(255),沒(méi)有默認(rèn)值。
@for_xp_flag
常量。如果等于 1,則創(chuàng)建一個(gè)綁定令牌,該令牌可被傳遞給擴(kuò)展存儲(chǔ)過(guò)程以回調(diào)服務(wù)器。
無(wú)
無(wú)
在 Microsoft SQL Server 2000 中,sp_getbindtoken 僅當(dāng)在活動(dòng)事務(wù)內(nèi)部執(zhí)行該存儲(chǔ)過(guò)程時(shí)才返回有效令牌。 否則,SQL Server 將返回一個(gè)錯(cuò)誤信息。例如:
說(shuō)明 在 SQL Server 7.0 中,即使在活動(dòng)事務(wù)外部執(zhí)行該存儲(chǔ)過(guò)程,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 用于在打開(kāi)的事務(wù)內(nèi)登記分布式事務(wù)連接時(shí),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 一起使用,將新會(huì)話綁定到同一事務(wù)上。綁定令牌僅在每個(gè) SQL Server 的本地機(jī)上有效且不能在多個(gè) SQL Server 實(shí)例中共享。
若要獲得并傳遞綁定令牌,則必須在運(yùn)行 sp_bindsession 之前運(yùn)行 sp_getbindtoken,以共享同一鎖空間。如果獲得綁定令牌,則 sp_bindsession 可正確運(yùn)行。
說(shuō)明 建議使用 srv_getbindtoken 開(kāi)放式數(shù)據(jù)服務(wù) API 來(lái)獲得從擴(kuò)展存儲(chǔ)過(guò)程處使用的綁定令牌。
執(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 沒(méi)有使用常量,將返回下列錯(cuò)誤信息:
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)文章