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.
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
Související obsah
- sp_bindsession (Transact-SQL)
- uložené procedury systému (Transact-SQL)
- srv_getbindtoken (rozhraní API rozšířené uložené procedury)