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.

Importante

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

Aplica-se a: SQL Server (SQL Server 2008 à versão atual).

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

Dica

É 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)