sp_check_for_sync_trigger (Transact-SQL)
Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure
Determina se um gatilho definido pelo usuário ou um procedimento armazenado está sendo chamado no contexto de um gatilho de replicação, que é usado para atualizar assinaturas imediatas. Esse procedimento armazenado é executado no Publicador no banco de dados de publicação ou no Assinante no banco de dados de assinatura.
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_check_for_sync_trigger
[ @tabid = ] tabid
[ , [ @trigger_op = ] 'trigger_op' OUTPUT ]
[ , [ @fonpublisher = ] fonpublisher ]
[ ; ]
Argumentos
@tabid [ = ] tabid
A ID do objeto da tabela que está sendo verificada para gatilhos de atualização imediata. @tabid é int, sem padrão.
@trigger_op [ = ] SAÍDA 'trigger_op'
Especifica se o parâmetro de saída deve retornar o tipo de gatilho do qual ele está sendo chamado. @trigger_op é um parâmetro OUTPUT do tipo char(10) e pode ser um desses valores.
Valor | Descrição |
---|---|
Ins |
INSERT gatilho |
Upd |
UPDATE gatilho |
Del |
DELETE gatilho |
NULL (padrão) |
@fonpublisher [ = ] fonpublisher
Especifica o local onde o procedimento armazenado é executado. @fonpublisher é bit, com um padrão de 0
.
- Se
0
, a execução é no Assinante. - Se
1
, a execução é no Publicador.
Valores do código de retorno
0 indica que o procedimento armazenado não está sendo chamado no contexto de um gatilho de atualização imediata. 1 indica que ele está sendo chamado dentro do contexto de um gatilho de atualização imediata e é o tipo de gatilho que está sendo retornado em @trigger_op.
Comentários
sp_check_for_sync_trigger
é usado na replicação de instantâneo e na replicação transacional.
sp_check_for_sync_trigger
é usado para coordenar entre a replicação e os gatilhos definidos pelo usuário. Esse procedimento armazenado determina se ele está sendo chamado dentro do contexto de um gatilho de replicação. Por exemplo, você pode chamar o procedimento sp_check_for_sync_trigger
no corpo de um gatilho definido pelo usuário. Se sp_check_for_sync_trigger
retornar 0
, o gatilho definido pelo usuário continuará sendo processado. Se sp_check_for_sync_trigger
retornar 1
, o gatilho definido pelo usuário será encerrado. Isso garante que o gatilho definido pelo usuário não seja acionado quando o gatilho de replicação atualizar a tabela.
Exemplos
R. Adicionar código a um gatilho em uma tabela de Assinante
O exemplo a seguir mostra código que pode ser usado em um gatilho, em uma tabela de Assinante.
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. Adicionar código a um gatilho em uma tabela do Publisher
O código também pode ser adicionado a um gatilho em uma tabela no Publicador; O código é semelhante, mas a chamada para sp_check_for_sync_trigger
inclui um parâmetro extra.
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;
Permissões
Qualquer usuário com SELECT
permissões na exibição do sistema sys.objects pode executar sp_check_for_sync_trigger
o .