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