Partilhar via


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_triggero .