sp_getbindtoken (Transact-SQL)

適用於:SQL Server

傳回交易的唯一標識碼。 這個唯一標識碼是用來使用sp_bindsession系結會話的字串。

重要

SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用多個作用中結果集 (MARS) 或分散式交易。 如需詳細資訊,請參閱使用 Multiple Active Result Sets (MARS)

Transact-SQL 語法慣例

語法

  
sp_getbindtoken [@out_token =] 'return_value' OUTPUT   

引數

[@out_token= ]'return_value'
這是用來系結會話的令牌。 return_value為 varchar(255),沒有預設值。

傳回碼值

結果集

None

備註

只有在使用中交易內執行預存程式時,sp_getbindtoken才會傳回有效的令牌。 否則,資料庫引擎 會傳回錯誤訊息。 例如:

-- Declare a variable to hold the bind token.  
-- No active transaction.  
DECLARE @bind_token varchar(255);  
-- Trying to get the bind token returns an error 3921.  
EXECUTE sp_getbindtoken @bind_token OUTPUT;  
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 會傳回相同的令牌。 例如:

USE AdventureWorks2022;  
GO  
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;  

這兩 SELECT 個語句都會傳回相同的令牌:

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搭配使用,將新的會話系結至相同的交易。 系結令牌只有在 資料庫引擎 的每個實例內才有效,而且無法在多個實例之間共用。

若要取得並傳遞系結令牌,您必須先執行sp_getbindtoken,才能執行sp_bindsession來共用相同的鎖定空間。 如果您取得系結令牌,sp_bindsession正確執行。

注意

建議您使用 srv_getbindtoken Open Data Services 應用程式開發介面 (API) 來取得系結令牌,以從擴充預存程式使用。

權限

需要 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

另請參閱

sp_bindsession (Transact-SQL)
系統預存程序 (Transact-SQL)
srv_getbindtoken (擴充預存程式 API)