sp_getbindtoken (Transact-SQL)

Se aplica a:SQL Server

Devuelve un identificador único para la transacción. Este identificador único es una cadena que se utiliza para enlazar sesiones mediante sp_bindsession.

Importante

Esta característica se quitará en una versión futura de SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Use varios conjuntos de resultados activos (MARS) o transacciones distribuidas en su lugar. Para obtener más información, vea Utilizar conjuntos de resultados activos múltiples (MARS).

Convenciones de sintaxis de Transact-SQL

Sintaxis

  
sp_getbindtoken [@out_token =] 'return_value' OUTPUT   

Argumentos

[@out_token= ]'return_value'
Es el token que se va a utilizar para enlazar las sesiones. return_value es varchar(255) sin ningún valor predeterminado.

Valores de código de retorno

None

Conjuntos de resultados

None

Comentarios

sp_getbindtoken devolverá un token válido solo cuando el procedimiento almacenado se ejecute dentro de una transacción activa. De lo contrario, el Motor de base de datos devolverá un mensaje de error. Por ejemplo:

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

Cuando se usa sp_getbindtoken para inscribir una conexión de transacción distribuida dentro de una transacción abierta, SQL Server devuelve el mismo token. Por ejemplo:

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;  

Las dos instrucciones SELECT devuelven el mismo símbolo (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)  

El símbolo (token) de enlace se puede utilizar con sp_bindsession para enlazar nuevas sesiones a la misma transacción. El token de enlace solo es válido localmente dentro de cada instancia del Motor de base de datos y no se puede compartir entre varias instancias.

Para obtener y pasar un símbolo (token) de enlace, debe ejecutar sp_getbindtoken antes de ejecutar sp_bindsession para compartir el mismo espacio de bloqueo. Si obtiene un símbolo (token) de enlace, sp_bindsession se ejecuta correctamente.

Nota:

Se recomienda utilizar la interfaz de programación de aplicaciones (API) de Servicios abiertos de datos srv_getbindtoken para obtener un símbolo (token) de enlace que se pueda utilizar desde un procedimiento almacenado extendido.

Permisos

Debe pertenecer al rol public.

Ejemplos

En el ejemplo siguiente se obtiene un símbolo (token) de enlace y se muestra su nombre.

DECLARE @bind_token varchar(255);  
BEGIN TRAN;  
EXECUTE sp_getbindtoken @bind_token OUTPUT;  
SELECT @bind_token AS Token;  

El conjunto de resultados es el siguiente:

Token

----------------------------------------------------------

\0]---5^PJK51bP<1F<-7U-]ANZ

Consulte también

sp_bindsession (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)
srv_getbindtoken (API de procedimiento almacenado extendido)