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 réplica 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.

Icono de vínculo a temasConvenciones 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 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.

Notas

sp_check_for_sync_trigger se utiliza en la réplica de instantáneas y transaccional.

sp_check_for_sync_trigger se utiliza para coordinar los desencadenadores de réplica y los definidos por el usuario. Este procedimiento almacenado determina si se le llama en el contexto de un desencadenador de réplica. 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 réplica actualiza la tabla.

Permisos

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

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.

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

Vea también

Otros recursos

Suscripciones actualizables para réplica transaccional

Ayuda e información

Obtener ayuda sobre SQL Server 2005