sp_getbindtoken (Transact-SQL)
gäller för:SQL Server
Returnerar en unik identifierare för transaktionen. Den här unika identifieraren är en sträng som används för att binda sessioner med hjälp av sp_bindsession
.
Viktig
Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Använd flera aktiva resultatuppsättningar (MARS) eller distribuerade transaktioner i stället. Mer information finns i Using Multiple Active Result Sets (MARS) in SQL Server Native Client.
Transact-SQL syntaxkonventioner
Syntax
sp_getbindtoken [ @out_token = ] 'out_token' OUTPUT
[ ; ]
Argument
Viktig
Argument för utökade lagrade procedurer måste anges i den specifika ordning som beskrivs i avsnittet Syntax. Om parametrarna anges i fel ordning visas ett felmeddelande.
[ @out_token = ] "out_token"
Den token som ska användas för att binda sessioner. @out_token är varchar(255), utan standard.
Returnera kodvärden
Ingen.
Resultatuppsättning
Ingen.
Anmärkningar
sp_getbindtoken
returnerar endast en giltig token när den lagrade proceduren körs i en aktiv transaktion. Annars returnerar databasmotorn ett felmeddelande. Till exempel:
-- 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;
Här är resultatuppsättningen.
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.
När sp_getbindtoken
används för att registrera en distribuerad transaktionsanslutning i en öppen transaktion returnerar SQL Server samma token. Till exempel:
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;
Båda SELECT
-uttryck returnerar samma token:
Token1
------
PKb'gN5<9aGEedk_16>8U=5---/5G=--
Token2
------
PKb'gN5<9aGEedk_16>8U=5---/5G=--
Bindningstoken kan användas med sp_bindsession
för att binda nya sessioner till samma transaktion. Bindningstoken är endast giltig lokalt i varje instans av databasmotorn och kan inte delas mellan flera instanser.
Om du vill hämta och skicka en bindningstoken måste du köra sp_getbindtoken
innan du kör sp_bindsession
för att dela samma låsutrymme. Om du hämtar en bindningstoken körs sp_bindsession
korrekt.
Not
Vi rekommenderar att du använder srv_getbindtoken Open Data Services-programprogramprogramgränssnittet (API) för att hämta en bindningstoken som ska användas från en utökad lagrad procedur.
Behörigheter
Kräver medlemskap i den offentliga rollen.
Exempel
I följande exempel hämtas en bindningstoken och namnet på bindningstoken visas.
DECLARE @bind_token VARCHAR(255);
BEGIN TRANSACTION;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token;
--COMMIT TRANSACTION;
Här är resultatuppsättningen.
Token
-----
\0]---5^PJK51bP<1F<-7U-]ANZ