sp_getbindtoken (Transact-SQL)
Aplica-se a:SQL Server
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 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, consulte Usando MARS (vários conjuntos de resultados ativos).
Convenções de sintaxe de 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 do código de retorno
Nenhum
Conjuntos de resultados
Nenhum
Comentários
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 dentro de uma transação aberta, o SQL Server retorna o mesmo token. Por exemplo:
USE AdventureWorks2022;
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 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 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 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 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;
Este é o conjunto de resultados.
Token
----------------------------------------------------------
\0]---5^PJK51bP<1F<-7U-]ANZ
Confira também
sp_bindsession (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)
srv_getbindtoken (API de Procedimento Armazenado Estendido)
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de