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)
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de