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, mit der Sitzungen mithilfe von sp_bindsession gebunden werden.
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).
Transact-SQL-Syntaxkonventionen
Syntax
sp_getbindtoken [@out_token =] 'return_value' OUTPUT
Argumente
[@out_token= ]'return_value'
Das Token, das zum Binden von Sitzungen verwendet wird. return_value ist varchar(255) ohne Standard.
Rückgabecodewerte
Keine
Resultsets
Keine
Hinweise
sp_getbindtoken gibt nur dann ein gültiges Token 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;
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.
Wenn sp_getbindtoken zum Auflisten einer verteilten Transaktionsverbindung innerhalb einer geöffneten Transaktion verwendet wird, gibt SQL Server dasselbe Token zurück. Zum Beispiel:
USE AdventureWorks2022;
GO
DECLARE @bind_token varchar(255);
BEGIN TRAN;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token;
BEGIN DISTRIBUTED TRAN;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token;
Beide SELECT
-Anweisungen geben dasselbe Token zurück:
Token
-----
PKb'gN5<9aGEedk_16>8U=5---/5G=--
(1 row(s_) affected)
Token
-----
PKb'gN5<9aGEedk_16>8U=5---/5G=--
(1 row(s_) affected)
Das Bindungstoken kann zusammen mit sp_bindsession verwendet 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.
Zum Erhalten und Übergeben eines Bindungstokens muss sp_getbindtoken vor sp_bindsession ausgeführt werden, um denselben Sperrbereich gemeinsam verwenden zu können. Wenn Sie ein Bindungstoken erhalten, wird sp_bindsession 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 TRAN;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token;
Hier ist das Resultset.
Token
----------------------------------------------------------
\0]---5^PJK51bP<1F<-7U-]ANZ
Weitere Informationen
sp_bindsession (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)
srv_getbindtoken (API für erweiterte gespeicherte Prozeduren)
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für