Sdílet prostřednictvím


sp_getbindtoken (Transact-SQL)

platí pro:SQL Server

Vrátí jedinečný identifikátor transakce. Tento jedinečný identifikátor je řetězec používaný k vytvoření vazby relací pomocí sp_bindsession.

Důležitý

Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Místo toho použijte více aktivních sad výsledků (MARS) nebo distribuovaných transakcí. Další informace naleznete v tématu Použití více aktivních sad výsledků (MARS) v sql Server Native Client.

Transact-SQL konvence syntaxe

Syntax

sp_getbindtoken [ @out_token = ] 'out_token' OUTPUT
[ ; ]

Argumenty

Důležitý

Argumenty rozšířených uložených procedur musí být zadány v určitém pořadí, jak je popsáno v části Syntaxe. Pokud jsou parametry zadány mimo pořadí, dojde k chybové zprávě.

[ @out_token = ] 'out_token'

Token, který se má použít k vytvoření vazby relací. @out_token je varchar(255), bez výchozího nastavení.

Návratové hodnoty kódu

Žádný.

Sada výsledků

Žádný.

Poznámky

sp_getbindtoken vrátí platný token pouze v případech, kdy je uložená procedura spuštěna uvnitř aktivní transakce. V opačném případě databázový stroj vrátí chybovou zprávu. Například:

-- 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;

Tady je sada výsledků.

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.

Pokud sp_getbindtoken slouží k zařazení distribuovaného připojení transakce uvnitř otevřené transakce, SQL Server vrátí stejný token. Například:

USE AdventureWorks2022;
GO

DECLARE @bind_token VARCHAR(255);
BEGIN TRANSACTION;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token1;
BEGIN DISTRIBUTED TRANSACTION;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token2;
--COMMIT TRANSACTION;
--COMMIT TRANSACTION;

Oba příkazy SELECT vrátí stejný token:

Token1
------
PKb'gN5<9aGEedk_16>8U=5---/5G=--

Token2
------
PKb'gN5<9aGEedk_16>8U=5---/5G=--

Token vazby lze použít s sp_bindsession k vytvoření vazby nových relací ke stejné transakci. Token vazby je platný pouze místně v každé instanci databázového stroje a nejde ho sdílet napříč několika instancemi.

Pokud chcete získat a předat token vazby, musíte před spuštěním sp_bindsession spustit sp_getbindtoken pro sdílení stejného prostoru zámku. Pokud získáte token vazby, sp_bindsession se spustí správně.

Poznámka

Doporučujeme použít srv_getbindtoken rozhraní API (Open Data Services) k získání tokenu vazby, který se má použít z rozšířené uložené procedury.

Dovolení

Vyžaduje členství ve veřejné roli.

Příklady

Následující příklad získá token vazby a zobrazí název tokenu vazby.

DECLARE @bind_token VARCHAR(255);
BEGIN TRANSACTION;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token;
--COMMIT TRANSACTION;

Tady je sada výsledků.

Token
-----
\0]---5^PJK51bP<1F<-7U-]ANZ