sp_check_for_sync_trigger (Transact-SQL)
Se aplica a: SQL Server Azure SQL Managed Instance
Determina si se llama a un desencadenador o procedimiento almacenado definido por el usuario en el contexto de un desencadenador de replicación, que se usa para las 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_op' OUTPUT ]
[ , [ @fonpublisher = ] fonpublisher ]
[ ; ]
Argumentos
[ @tabid = ] tabid
Identificador de objeto de la tabla que se está comprobando para los desencadenadores de actualización inmediata. @tabid es int, sin ningún valor predeterminado.
[ @trigger_op = ] SALIDA 'trigger_op'
Especifica si el parámetro de salida es devolver el tipo de desencadenador desde el que se llama. @trigger_op es un parámetro OUTPUT de tipo char(10) y puede ser uno de estos valores.
Valor | Descripción |
---|---|
Ins |
INSERT detonante |
Upd |
UPDATE detonante |
Del |
DELETE detonante |
NULL (valor predeterminado) |
[ @fonpublisher = ] fonpublisher
Especifica la ubicación donde el procedimiento almacenado se ejecuta. @fonpublisher es bit, con un valor predeterminado de 0
.
- Si
0
es , la ejecución se encuentra en el suscriptor. - Si
1
es , la ejecución se encuentra en el publicador.
Valores de código de retorno
0 indica que no se llama al procedimiento almacenado en el contexto de un desencadenador de actualización inmediata. 1 indica que se está llamando en el 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 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 llama dentro del 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. Esto garantiza que el desencadenador definido por el usuario no se active cuando el desencadenador de replicación actualiza la tabla.
Ejemplos
A Adición de código a un desencadenador en una tabla de suscriptor
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 en una tabla del 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
Cualquier usuario con SELECT
permisos en la vista del sistema sys.objects puede ejecutar sp_check_for_sync_trigger
.