sp_getbindtoken (Transact-SQL)
Aplica-se: SQL Server
Retorna um identificador exclusivo para a transação. Esse identificador exclusivo é uma cadeia de caracteres usada para vincular sessões usando sp_bindsession
o .
Importante
Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam. Em vez disso, use vários conjuntos de resultados ativos (MARS) ou transações distribuídas. Para obter mais informações, veja Usando MARS (conjuntos de resultados ativos múltiplos) no SQL Server Native Client.
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_getbindtoken [ @out_token = ] 'out_token' OUTPUT
[ ; ]
Argumentos
@out_token [ = ] 'out_token'
O token a ser usado para associar sessões. @out_token é varchar(255), sem padrão.
Valores do código de retorno
Nenhum.
Conjunto de resultados
Nenhum.
Comentários
sp_getbindtoken
Retorna um token válido somente quando o procedimento armazenado é 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;
Veja a seguir o conjunto de resultados.
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 dentro de uma transação aberta, o SQL Server retorna o mesmo token. Por exemplo:
USE AdventureWorks2022;
GO
DECLARE @bind_token VARCHAR(255);
BEGIN TRANSACTION;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token1;
BEGIN DISTRIBUTED TRANSACTION;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token2;
--COMMIT TRANSACTION;
--COMMIT TRANSACTION;
Ambas as instruções SELECT
retornam o mesmo token:
Token1
------
PKb'gN5<9aGEedk_16>8U=5---/5G=--
Token2
------
PKb'gN5<9aGEedk_16>8U=5---/5G=--
O token de associação pode ser usado para sp_bindsession
associar novas sessões à mesma transação. O token de associação só é válido localmente dentro de cada instância do Mecanismo de Banco de Dados e não pode ser compartilhado entre várias instâncias.
Para obter e passar um token de associação, você deve executar sp_getbindtoken
antes de executar sp_bindsession
para compartilhar o mesmo espaço de bloqueio. Se você obtiver um token de associação, o será sp_bindsession
executado corretamente.
Observação
É recomendável que você use 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 pública .
Exemplos
O exemplo a seguir obtém um token de associação e exibe o nome dele.
DECLARE @bind_token VARCHAR(255);
BEGIN TRANSACTION;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token;
--COMMIT TRANSACTION;
Veja a seguir o conjunto de resultados.
Token
-----
\0]---5^PJK51bP<1F<-7U-]ANZ