Freigeben über


sp_getbindtoken (Transact-SQL)

Gilt für: SQL Server

Gibt einen eindeutigen Bezeichner für die Transaktion zurück. Dieser eindeutige Bezeichner ist eine Zeichenfolge, die zum Binden von Sitzungen mithilfe von sp_bindsession.

Wichtig

Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Verwenden Sie stattdessen mehrere aktive Resultsets (MARS) oder verteilte Transaktionen. Weitere Informationen finden Sie unter Verwenden von Multiple Active Result Sets (MARS) in SQL Server Native Client.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @out_token = ] 'out_token'

Das Token, das zum Binden von Sitzungen verwendet werden soll. @out_token ist varchar(255) ohne Standard.

Rückgabecodewerte

Keine.

Resultset

Keine.

Hinweise

sp_getbindtoken gibt ein gültiges Token nur zurück, wenn die gespeicherte Prozedur innerhalb einer aktiven Transaktion ausgeführt wird. Andernfalls gibt die Datenbank-Engine eine Fehlermeldung zurück. Zum Beispiel:

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

Hier sehen Sie das Ergebnis.

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.

Wird sp_getbindtoken verwendet, um eine verteilte Transaktionsverbindung innerhalb einer geöffneten Transaktion auflisten, gibt SQL Server dasselbe Token zurück. Zum Beispiel:

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-Anweisungen geben dasselbe Token zurück:

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

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

Das Bindungstoken kann verwendet sp_bindsession werden, um neue Sitzungen an dieselbe Transaktion zu binden. Das Bindungstoken ist nur lokal innerhalb jeder Instanz des Datenbank-Engine gültig und kann nicht für mehrere Instanzen freigegeben werden.

Um ein Bindungstoken abzurufen und zu übergeben, müssen Sie ausgeführt sp_getbindtoken werden, bevor sp_bindsession Sie denselben Sperrraum freigeben. Wenn Sie ein Bindungstoken abrufen, sp_bindsession wird es ordnungsgemäß ausgeführt.

Hinweis

Um ein Bindungstoken zu erhalten, das von einer erweiterten gespeicherten Prozedur verwendet werden kann, sollte die API-Funktion srv_getbindtoken von Open Data Services verwendet werden.

Berechtigungen

Erfordert die Mitgliedschaft in der public -Rolle.

Beispiele

Im folgenden Beispiel wird ein Bindungstoken erhalten und der Bindungstokenname angezeigt.

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

Hier sehen Sie das Ergebnis.

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