sp_check_for_sync_trigger (Transact-SQL)

Se aplica a:SQL ServerAzure SQL Managed Instance

Determina si se va a llamar a un procedimiento almacenado o un desencadenador definido por el usuario en el contexto de un desencadenador de replicación que se utiliza para suscripciones de actualización inmediata. Este procedimiento almacenado se ejecuta en el publicador de la base de datos de publicación o en el suscriptor de la base de datos de suscripciones.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_check_for_sync_trigger [ @tabid = ] 'tabid'   
    [ , [ @trigger_op = ] 'trigger_output_parameters' OUTPUT ]  
    [ , [ @fonpublisher = ] fonpublisher ]  

Argumentos

[@tabid = ] 'tabid'
Es el identificador de objeto de la tabla en la que se comprueba si hay desencadenadores de actualización inmediata. tabid es int sin valor predeterminado.

[@trigger_op = ] SALIDA de "trigger_output_parameters"
Especifica si el parámetro de salida va a devolver el tipo de desencadenador desde el que se le llama. trigger_output_parameters es char(10) y puede ser uno de estos valores.

Valor Descripción
Ins Desencadenador INSERT.
Upd Desencadenador UPDATE.
Supr Desencadenador DELETE.
NULL (predeterminado)

[ @fonpublisher = ] fonpublisher Especifica la ubicación donde se ejecuta el procedimiento almacenado. fonpublisher es bit, con un valor predeterminado de 0. Si es 0, la ejecución está en el suscriptor y si es 1, la ejecución está en el publicador.

Valores de código de retorno

El valor 0 indica que el procedimiento almacenado no se llama en el contexto de un desencadenador de actualización inmediata. 1 indica que se está llamando dentro del contexto de un desencadenador de actualización inmediata y es el tipo de desencadenador que se devuelve en @trigger_op.

Comentarios

sp_check_for_sync_trigger se usa en la replicación de instantáneas y en la replicación transaccional.

sp_check_for_sync_trigger se usa para coordinar entre la replicación y los desencadenadores definidos por el usuario. Este procedimiento almacenado determina si se le llama en el contexto de un desencadenador de replicación. Por ejemplo, puede llamar al procedimiento sp_check_for_sync_trigger en el cuerpo de un desencadenador definido por el usuario. Si sp_check_for_sync_trigger devuelve 0, el desencadenador definido por el usuario continúa procesando. Si sp_check_for_sync_trigger devuelve 1, se cierra el desencadenador definido por el usuario. Así se garantiza que el desencadenador definido por el usuario no se activa cuando el desencadenador de replicación actualiza la tabla.

Ejemplos

A. Agregar código a un desencadenador en una tabla de suscriptores

En el ejemplo siguiente se muestra código que se podría utilizar en un desencadenador de una tabla del suscriptor.

DECLARE @retcode int, @trigger_op char(10), @table_id int  
SELECT @table_id = object_id('tablename')  
EXEC @retcode = sp_check_for_sync_trigger @table_id, @trigger_op OUTPUT  
IF @retcode = 1  
RETURN  

B. Adición de código a un desencadenador en una tabla de Publisher

El código también se puede agregar a un desencadenador de una tabla en el publicador; el código es similar, pero la llamada a sp_check_for_sync_trigger incluye un parámetro adicional.

DECLARE @retcode int, @trigger_op char(10), @table_id int, @fonpublisher int  
SELECT @table_id = object_id('tablename')  
SELECT @fonpublisher = 1  
EXEC @retcode = sp_check_for_sync_trigger @table_id, @trigger_op OUTPUT, @fonpublisher  
IF @retcode = 1  
RETURN  

Permisos

sp_check_for_sync_trigger procedimiento almacenado puede ejecutar cualquier usuario con permisos SELECT en la vista del sistema sys.objects .

Consulte también

Updatable Subscriptions for Transactional Replication