Share via


sp_getbindtoken (Transact-SQL)

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

Nota importanteImportante

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

Icono de vínculo a temas 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 de tipo varchar(255) y no tiene valor predeterminado.

Valores del código de retorno

Ninguno

Conjuntos de resultados

Ninguno

Comentarios

sp_getbindtoken devolverá un token válido solamente cuando el procedimiento almacenado se ejecute dentro de una transacción activa. En caso contrario, el Motor de base de datos devuelve 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 utiliza sp_getbindtoken para dar de alta una conexión de transacción distribuida dentro de una transacción abierta, en SQL Server se devuelve el mismo token. Por ejemplo:

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;

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 token de enlace se puede utilizar con sp_bindsession para enlazar nuevas sesiones a la misma transacción. El símbolo (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 token de enlace, debe ejecutar sp_getbindtoken antes de ejecutar sp_bindsession para compartir el mismo espacio de bloqueo. Si obtiene un 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 token de enlace que se pueda utilizar desde un procedimiento almacenado extendido.

Permisos

Requiere la pertenencia 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

Vea también

Referencia

sp_bindsession (Transact-SQL)

Procedimientos almacenados del sistema (Transact-SQL)

srv_getbindtoken (API de procedimiento almacenado extendido)