Compartilhar via


sp_getbindtoken (Transact-SQL)

Retorna um identificador exclusivo para a transação. Esse identificador exclusivo é uma cadeia de caracteres usada para associar sessões usando sp_bindsession.

Observação importanteImportante

Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. Use MARS (vários conjuntos de resultados ativos) ou, então, transações distribuídas. Para obter mais informações, consulte Usando MARS (vários conjuntos de resultados ativos).

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

sp_getbindtoken [@out_token =] 'return_value' OUTPUT 

Argumentos

  • [@out_token= ]'return_value'
    É o token a ser usado para associar sessões. return_value é varchar(255) sem padrão.

Valores de código de retorno

Nenhum

Conjuntos de resultados

Nenhum

Comentários

No sp_getbindtoken retornará um token válido somente quando o procedimento armazenado for executado dentro de uma transação ativa. Caso contrário, o Mecanismo de Banco de Dados retornará uma mensagem de erro. Por exemplo:

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

Quando sp_getbindtoken é usado para inscrever uma conexão de transação distribuída em uma transação aberta, o SQL Server retorna o mesmo token. Por exemplo:

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

Ambas as instruções SELECT retornam o mesmo token:

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

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

O token de associação pode ser usado com sp_bindsession para associar novas sessões à mesma transação. O token de associação é válido apenas localmente, dentro de cada instância do Mecanismo de Banco de Dados¸ e não é compartilhado por várias instâncias.

Para obter e passar um token de associação, você deve executar sp_getbindtoken antes de sp_bindsession para compartilhar o mesmo espaço de bloqueio. Se você obtiver um token de associação, sp_bindsession será executado corretamente.

ObservaçãoObservação

É recomendável usar a API do aplicativo Open Data Services srv_getbindtoken para obter um token de associação a ser usado de um procedimento armazenado estendido.

Permissões

Requer associação à função public.

Exemplos

O exemplo a seguir obtém um token de associação e exibe o nome dele.

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

Aqui está o conjunto de resultados.

Token

----------------------------------------------------------

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

Consulte também

Referência

sp_bindsession (Transact-SQL)

Procedimentos armazenados do sistema (Transact-SQL)

srv_getbindtoken (API de Procedimento Armazenado Estendido)