Delen via


sp_getbindtoken (Transact-SQL)

van toepassing op:SQL Server-

Retourneert een unieke id voor de transactie. Deze unieke id is een tekenreeks die wordt gebruikt om sessies te binden met behulp van sp_bindsession.

Belangrijk

Deze functie wordt verwijderd in een toekomstige versie van SQL Server. Vermijd het gebruik van deze functie in nieuwe ontwikkelwerkzaamheden en plan om toepassingen te wijzigen die momenteel gebruikmaken van deze functie. Gebruik in plaats daarvan meerdere actieve resultatensets (MARS) of gedistribueerde transacties. Zie Using Multiple Active Result Sets (MARS) in SQL Server Native Clientvoor meer informatie.

Transact-SQL syntaxisconventies

Syntaxis

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

Argumenten

Belangrijk

Argumenten voor uitgebreide opgeslagen procedures moeten worden ingevoerd in de specifieke volgorde, zoals beschreven in de sectie Syntaxis. Als de parameters niet in de volgorde zijn ingevoerd, treedt er een foutbericht op.

[ @out_token = ] 'out_token'

Het token dat moet worden gebruikt om sessies te binden. @out_token is varchar(255), zonder standaardinstelling.

Codewaarden retourneren

Geen.

Resultatenset

Geen.

Opmerkingen

sp_getbindtoken retourneert alleen een geldig token wanneer de opgeslagen procedure wordt uitgevoerd binnen een actieve transactie. Anders retourneert de database-engine een foutbericht. Bijvoorbeeld:

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

Dit is de resultatenset.

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.

Wanneer sp_getbindtoken wordt gebruikt om een gedistribueerde transactieverbinding in te schakelen binnen een geopende transactie, retourneert SQL Server hetzelfde token. Bijvoorbeeld:

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;

Beide SELECT-instructies retourneren hetzelfde token:

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

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

Het bindingstoken kan worden gebruikt met sp_bindsession om nieuwe sessies aan dezelfde transactie te binden. Het bindingstoken is alleen lokaal geldig binnen elk exemplaar van de database-engine en kan niet worden gedeeld tussen meerdere exemplaren.

Als u een bindingstoken wilt verkrijgen en doorgeven, moet u sp_getbindtoken uitvoeren voordat u sp_bindsession uitvoert voor het delen van dezelfde vergrendelingsruimte. Als u een bindingstoken verkrijgt, wordt sp_bindsession correct uitgevoerd.

Notitie

U wordt aangeraden de srv_getbindtoken Open Data Services Application Programming Interface (API) te gebruiken om een bindingstoken te verkrijgen dat moet worden gebruikt via een uitgebreide opgeslagen procedure.

Machtigingen

Vereist lidmaatschap van de openbare rol.

Voorbeelden

In het volgende voorbeeld wordt een bindingstoken opgehaald en wordt de naam van het bindingstoken weergegeven.

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

Dit is de resultatenset.

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