sp_bindsession (Transact-SQL)

Enlaza, o desenlaza, una sesión con otras sesiones en la misma instancia del Motor de base de datos de SQL Server. Las sesiones enlazadas permiten que dos o más sesiones participen en la misma transacción y compartan bloqueos hasta que se emita una instrucción ROLLBACK TRANSACTION o COMMIT TRANSACTION.

Para obtener más información acerca de las conexiones enlazadas, vea Usar sesiones enlazadas.

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) o Transacciones distribuidas (motor de base de datos).

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

sp_bindsession { 'bind_token' | NULL }

Argumentos

  • 'bind_token'
    Es el token que identifica la transacción obtenida originalmente con sp_getbindtoken o con la función srv_getbindtoken de Servicios abiertos de datos. bind_tokenes de tipo varchar(255).

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

Las dos sesiones enlazadas comparten sólo una transacción y bloqueos. Cada sesión conserva su propio nivel de aislamiento y la configuración de un nivel de aislamiento nuevo en una sesión no afecta al nivel de aislamiento de la otra sesión. Cada sesión sigue siendo identificada por su cuenta de seguridad y sólo puede tener acceso a los recursos de la base de datos para los que se ha concedido acceso a la cuenta.

sp_bindsession utiliza un token de enlace para enlazar dos o más sesiones de cliente existentes. Estas sesiones de cliente deben estar en la misma instancia del Motor de base de datos desde la que se obtuvo el token de enlace. Una sesión es un cliente que ejecuta un comando. Las sesiones de bases de datos enlazadas comparten la transacción y el espacio de bloqueo.

Un token de enlace obtenido a partir de una instancia del Motor de base de datos no puede utilizarse en una sesión de cliente que esté en otra instancia, incluso si se trata de una transacción DTC. Un token de enlace solamente es válido dentro de cada instancia y no se puede compartir entre varias. Para enlazar las sesiones de cliente a otra instancia del Motor de base de datos, debe obtener un token de enlace distinto mediante la ejecución de sp_getbindtoken.

sp_bindsession generará un error si se utiliza un token que no esté activo.

Se puede desenlazar una sesión con sp_bindsession sin especificar bind_token o si se pasa NULL en bind_token.

Permisos

Requiere la pertenencia a la función public.

Ejemplos

En el ejemplo siguiente se enlaza el token de enlace especificado a la sesión actual.

Nota

El token de enlace mostrado en este ejemplo se obtuvo ejecutando sp_getbindtoken antes de ejecutar sp_bindsession.

USE master;
GO
EXEC sp_bindsession 'BP9---5---->KB?-V'<>1E:H-7U-]ANZ';
GO