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