Compartir a través de


srv_getbindtoken (API de procedimiento almacenado extendido)

Se aplica a: SQL Server

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. En su lugar, use la integración de CLR.

Obtiene un token de enlace de la transacción en la sesión del cliente actual que invoca el procedimiento almacenado extendido.

Luego el procedimiento almacenado extendido puede usar sp_bindsession para enlazar cualquier sesión nueva que cree con el mismo servidor a la transacción existente, de manera que la nueva sesión pueda compartir el mismo espacio de bloqueo de transacción con la sesión cliente que ha invocado el procedimiento almacenado extendido.

Sintaxis

  
int srv_getbindtoken (  
SRV_PROC*  
srvproc  
,  
char*  
bindtoken  
);  

Argumentos

srvproc
Es un puntero a la estructura SRV_PROC que es el identificador de una conexión cliente determinada. La estructura contiene toda la información que la biblioteca de API Procedimiento almacenado extendido usa para administrar las comunicaciones y los datos entre la aplicación y el cliente.

bindtoken
Es un puntero a un búfer donde se copiará el token de enlace. El token de enlace se representa como una cadena terminada en NULL. El búfer que especifica debería tener por lo menos 255 bytes de longitud.

Devoluciones

SUCCEED o FAIL.

Comentarios

Para enlazar una sesión de procedimiento almacenado extendido a la sesión del cliente que lo llamó de modo que compartan el mismo espacio de bloqueo de transacción

  1. El procedimiento almacenado extendido llama a srv_getbindtoken para obtener el token de enlace de la transacción actual en la sesión. El token se devuelve en el parámetro bindtoken determinado.

  2. El procedimiento almacenado extendido abre nuevas sesiones con el mismo servidor. Dentro de esa sesión, el procedimiento almacenado extendido usa el token de enlace con sp_bindsession para enlazar la nueva sesión a la misma transacción. El procedimiento almacenado extendido puede crear varias sesiones y enlazar todas las sesiones a la misma transacción.

  3. Una sesión enlazada se desenlaza cuando finaliza el procedimiento almacenado externo o cuando se llama a sp_bindsession con una cadena vacía.

    Nota:

    Solo una sesión enlazada puede tener cada vez acceso a una conexión compartida. Si una sesión está ejecutando actualmente una instrucción en el servidor o tiene resultados pendientes del servidor, ninguna otra sesión que comparta la misma conexión de enlace puede obtener acceso al servidor hasta que la sesión actual haya finalizado de ejecutar la instrucción actual. Si una sesión intenta obtener acceso a la conexión mientras el servidor no está disponible, se devolverá un error a la sesión en conflicto que indique que la conexión se está usando y que se debería reintentar la sesión más tarde.

Importante

Debe revisar minuciosamente el código fuente de los procedimientos almacenados extendidos y debe probar las DLL compiladas antes de instalarlas en el servidor de producción. Para obtener información acerca de la revisión y pruebas de seguridad, vea este sitio web de Microsoft.

Consulte también

sp_bindsession (Transact-SQL)
sp_getbindtoken (Transact-SQL)