sp_check_for_sync_trigger (Transact-SQL)
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 publicaciones o en el suscriptor de la base de datos de suscripciones.
Sintaxis
sp_check_for_sync_trigger [ @tabid = ] 'tabid'
[ , [ @trigger_op = ] 'trigger_output_parameters' OUTPUT ]
[ , [ @fonpublisher = ] fonpublisher ]
Argumentos
[@tabid = ] 'tabid'
Es el Id. de objeto de la tabla en la que se comprueba si hay desencadenadores de actualización inmediata. tabid es de tipo int y no tiene ningún valor predeterminado.[@trigger_op = ] 'trigger_output_parameters' OUTPUT
Especifica si el parámetro de salida va a devolver el tipo de desencadenador desde el que se le llama. trigger_output_parameters es de tipo char(10) y puede tener uno de estos valores:Valor
Descripción
Ins
Desencadenador INSERT.
Upd
Desencadenador UPDATE.
Del
Desencadenador DELETE.
NULL (predeterminado)
[ @fonpublisher = ] fonpublisher
Especifica la ubicación en la que se ejecuta el procedimiento almacenado. fonpublisher es de tipo bit y su valor predeterminado es 0. Si es 0, la ejecución se produce en el suscriptor y, si es 1, la ejecución tiene lugar 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. El valor 1 indica que se llama en el contexto de un desencadenador de actualización inmediata y es del tipo de desencadenador que se devuelve en @trigger\_op.
Notas
sp_check_for_sync_trigger se utiliza en la replicación de instantáneas y transaccional.
sp_check_for_sync_trigger se utiliza para coordinar los desencadenadores de replicación y los 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 almacenado 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 sigue procesándose. Si sp_check_for_sync_trigger devuelve 1, el desencadenador definido por el usuario se cierra. Así se garantiza que el desencadenador definido por el usuario no se activa cuando el desencadenador de replicación actualiza la tabla.
Ejemplo
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
El código también se puede agregar a un desencadenador de una tabla en el publicador; el código es parecido, 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
Cualquier usuario con permisos SELECT en la vista del sistema sys.objects puede ejecutar el procedimiento almacenado sp_check_for_sync_trigger.