Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: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.
Importante
Esse recurso será removido em uma versão futura do SQL Server. Evite usar esse recurso em novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso. Em vez disso, use vários conjuntos de resultados ativos (MARS) ou transações distribuídas. Para obter mais informações, consulte Usando vários conjuntos de resultados ativos (MARS) no SQL Server Native Client.
Transact-SQL convenções de sintaxe
Sintaxe
sp_getbindtoken [ @out_token = ] 'out_token' OUTPUT
[ ; ]
Argumentos
Importante
Os argumentos para procedimentos armazenados estendidos devem ser inseridos na ordem específica, conforme descrito na seção de sintaxe. Se os parâmetros forem inseridos fora de ordem, ocorrerá uma mensagem de erro.
[ @out_token = ] 'out_token'
O token a ser usado para vincular sessões. @out_token é varchar(255), sem padrão.
Valores de código de retorno
Nenhuma.
Conjunto de resultados
Nenhuma.
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 AS VARCHAR (255);
-- Trying to get the bind token returns an error 3921.
EXECUTE sp_getbindtoken @bind_token OUTPUT;
Aqui está 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 AS 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 ligação pode ser usado com sp_bindsession para vincular 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 ligaçã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 ligação, sp_bindsession será executado corretamente.
Observação
Recomendamos que você use a interface de programação de aplicativo (API) do srv_getbindtoken Open Data Services para obter um token de ligação a ser usado de um procedimento armazenado estendido.
Permissões
Requer a participação na função pública.
Exemplos
O exemplo a seguir obtém um token de ligação e exibe o nome do token de ligação.
DECLARE @bind_token AS VARCHAR (255);
BEGIN TRANSACTION;
EXECUTE sp_getbindtoken @bind_token OUTPUT;
SELECT @bind_token AS Token;
--COMMIT TRANSACTION;
Aqui está o conjunto de resultados.
Token
-----
\0]---5^PJK51bP<1F<-7U-]ANZ