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.
Importante: |
---|
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 Using Multiple Active Result Sets (MARS) o Transacciones distribuidas (motor de base de datos). |
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_getbindtoken [ @out_token = ] 'return_value' OUTPUT
Argumentos
- [@out_token =] 'return_value'
Es el símbolo (token) que se va a utilizar para enlazar las sesiones. return_value es de tipo varchar(255) y no tiene ningún valor predeterminado.
Conjuntos de resultados
Ninguno
Notas
En SQL Server 2000 y versiones posteriores, sp_getbindtoken devuelve un símbolo (token) válido solamente cuando el procedimiento almacenado se ejecuta dentro de una transacción activa. En caso contrario, el Database Engine (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.
[!NOTA] En SQL Server 7.0, sp_getbindtoken devuelve un símbolo (token) válido aunque el procedimiento almacenado se ejecute fuera de una transacción activa. El ejemplo anterior funciona en SQL Server 7.0, pero no en SQL Server 2000 o versiones posteriores.
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 2000 o versiones posteriores se devuelve el mismo símbolo (token). Por ejemplo:
USE AdventureWorks;
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 símbolo (token) de enlace sólo es válido localmente dentro de cada instancia del Database Engine (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 a la función public.
Valores de código de retorno
Ninguno
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;
Éste es el conjunto de resultados.
Token
----------------------------------------------------------
\0]---5^PJK51bP<1F<-7U-]ANZ
Vea también
Referencia
sp_bindsession (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)
Otros recursos
Usar sesiones enlazadas
srv_getbindtoken (Extended Stored Procedure API)