Compartilhar via


sp_check_for_sync_trigger (Transact-SQL)

Determina se um gatilho definido pelo usuário ou procedimento armazenado está sendo chamado no contexto de um gatilho de replicação usado para assinaturas de atualização imediata. Esse procedimento armazenado é executado no Publicador no banco de dados de publicação ou no Assinante, no banco de dados de assinatura.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

sp_check_for_sync_trigger [ @tabid = ] 'tabid' 
    [ , [ @trigger_op = ] 'trigger_output_parameters' OUTPUT ]
    [ , [ @fonpublisher = ] fonpublisher ]

Argumentos

  • [@tabid = ] 'tabid'
    É a ID de objeto da tabela marcada para gatilhos de atualização imediata. tabid é int sem padrão.

  • [@trigger_op = ] 'trigger_output_parameters' OUTPUT
    Especifica se o parâmetro de saída deve retornar o tipo de gatilho de onde ele está sendo chamado. trigger_output_parameters é char(10) e pode ser um destes valores.

    Valor

    Descrição

    Ins

    Gatilho INSERT

    Upd

    Gatilho UPDATE

    Del

    Gatilho DELETE

    NULL (padrão)

  • [ @fonpublisher = ] fonpublisher
    Especifica o local onde o procedimento armazenado é executado. fonpublisher é bit, com um valor padrão de 0. Se for 0 a execução será no Assinante e se for 1 a execução será no Publicador.

Valores de código de retorno

0 indica que o procedimento armazenado não está sendo chamado dentro do contexto de um gatilho da atualização imediata. 1 indica que ele está sendo chamado dentro do contexto de um gatilho da atualização imediata e é o tipo de gatilho que está sendo retornado em @trigger\_op.

Comentários

sp_check_for_sync_trigger é usado em replicação de instantâneo e 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á o processamento. Se sp_check_for_sync_trigger retornar 1, o gatilho definido pelo usuário será fechado. Isso assegura que o gatilho definido pelo usuário não seja disparado quando o gatilho de replicação atualizar a tabela.

Exemplo

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

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

Permissões

O procedimento armazenadosp_check_for_sync_trigger pode ser executado por qualquer usuário com permissões SELECT na exibição de sistema sys.objects.