Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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