sp_getbindtoken (Transact-SQL)
適用於:SQL Server
傳回交易的唯一標識碼。 這個唯一標識碼是用來使用sp_bindsession系結會話的字串。
重要
SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用多個作用中結果集 (MARS) 或分散式交易。 如需詳細資訊,請參閱使用 Multiple Active Result Sets (MARS)。
語法
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)
意見反映
https://aka.ms/ContentUserFeedback。
即將推出:我們會在 2024 年淘汰 GitHub 問題,並以全新的意見反應系統取代並作為內容意見反應的渠道。 如需更多資訊,請參閱:提交及檢視以下的意見反映: