sp_getbindtoken (języka Transact-SQL)

Zwraca identyfikator unikatowy dla transakcji.To identyfikator unikatowy to ciąg używany do wiązania sesji przy użyciu sp_bindsession.

Important noteImportant Note:

This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Użyj wielu zestawów wyniki Active (MARS) lub transakcji rozproszonych.Aby uzyskać więcej informacji zobacz Za pomocą wielu wyników Active ustawia (MARS) lub Distributed Transactions (Database Engine).

Topic link iconKonwencje składni języka Transact-SQL

sp_getbindtoken [@out_token =] 'return_value' OUTPUT 

Argumenty

  • [@out_token =]'return_value'
    Is the token to use to bind sessions.return_value is varchar(255) with no default.

Wartości kodów powrotnych

None

Zestawy wyników

None

Remarks

W SQL Server 2000 i jego nowszych wersji sp_getbindtoken zwróci prawidłowym tokenem tylko wtedy, gdy procedura przechowywana jest wykonywana w aktywnej transakcji.W przeciwnym razie Database Engine Zwraca komunikat o błędzie. Na przykład:

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

Uwaga

W SQL Server 7.0, sp_getbindtoken zwraca prawidłowym tokenem nawet wtedy, gdy procedura przechowywana jest wykonywana poza aktywnej transakcji.Poprzedni przykład działa w SQL Server 7.0, ale nie w SQL Server 2000 lub nowszy.

Kiedy sp_getbindtoken można zarejestrować transakcja rozproszona połączenia wewnątrz transakcji otwartej SQL Server 2000 lub wraca później do tego samego tokenu. Na przykład:

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;

Oba SELECT instrukcje powrócić do tego samego tokenu:

Token
-----
PKb'gN5<9aGEedk_16>8U=5---/5G=--
(1 row(s_) affected)

Token
-----
PKb'gN5<9aGEedk_16>8U=5---/5G=--
(1 row(s_) affected)

Wiązanie token może być używany z sp_bindsession powiązać nowe sesje z tej samej transakcji.Tokenu wiązania obowiązuje tylko lokalnie w każdym wystąpienie z Database Engine i nie mogą być współużytkowane przez wiele wystąpienie s.

Aby uzyskać i przekazywania tokenu wiązania, należy uruchomić sp_getbindtoken przed wykonaniem sp_bindsession udostępniania tego samego obszaru blokada.Po uzyskaniu tokenem powiązania sp_bindsession działa poprawnie.

Uwaga

Firma Microsoft zaleca użycie srv_getbindtoken Otwórz usług danych interfejs programowania aplikacji (API) do uzyskania tokenu wiązania do używania z rozszerzona procedura składowana.

Uprawnienia

Członkostwo w grupie wymaga publiczne roli.

Przykłady

W poniższym przykładzie uzyskuje tokenu wiązania i wyświetla Nazwa tokenu wiązania.

DECLARE @bind_token varchar(255);
BEGIN TRAN;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token;

Here is the result set.

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