Freigeben über


sp_getbindtoken (Transact-SQL)

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.

ms180061.note(de-de,SQL.90).gifWichtig:
Dieses Feature wird in einer zukünftigen Version von Microsoft SQL Server entfernt. Verwenden Sie dieses Feature beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. Verwenden Sie stattdessen Multiple Active Results Sets (MARS) oder verteilte Transaktionen. Weitere Informationen finden Sie unter Using Multiple Active Result Sets (MARS) oder Verteilte Transaktionen (Datenbankmodul).

Themenlink (Symbol)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 vom Datentyp varchar(255) und hat keinen Standardwert.

Rückgabecodewerte

Keine

Resultsets

Keine

Hinweise

In SQL Server 2000 und höher gibt sp_getbindtoken nur dann ein gültiges Token zurück, wenn die gespeicherte Prozedur innerhalb einer aktiven Transaktion ausgeführt wird. Andernfalls gibt Datenbankmodul eine Fehlermeldung zurück. 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.
ms180061.note(de-de,SQL.90).gifHinweis:
In SQL Server 7.0 gibt sp_getbindtoken auch dann ein gültiges Token zurück, wenn die gespeicherte Prozedur außerhalb einer aktiven Transaktion ausgeführt wird. Das zuvor genannte Beispiel kann in SQL Server, Version 7.0, jedoch nicht in SQL Server 2000 oder höher ausgeführt werden.

Wenn sp_getbindtoken zum Eintragen einer verteilten Transaktionsverbindung innerhalb einer geöffneten Transaktion verwendet wird, gibt SQL Server 2000 oder höher dasselbe Token zurück. Beispiel:

USE AdventureWorks;
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 von Datenbankmodul gültig und kann nicht von mehreren Instanzen gemeinsam genutzt 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.

ms180061.note(de-de,SQL.90).gifHinweis:
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;

Dies ist das Resultset.

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

Siehe auch

Verweis

sp_bindsession (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)

Andere Ressourcen

Verwenden von gebundenen Sitzungen
srv_getbindtoken (Extended Stored Procedure API)

Hilfe und Informationen

Informationsquellen für SQL Server 2005