sp_check_for_sync_trigger (Transact-SQL)

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

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.

Convenções de sintaxe de 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 onde gatilhos de atualização imediata estão sendo verificados. tabid é int sem padrão.

[@trigger_op = ] SAÍDA 'trigger_output_parameters'
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 desses valores.

Valor Descrição
Ins Gatilho INSERT
Upd Gatilho UPDATE
Del Gatilho DELETE
NULL (padrão)

[ @fonpublisher = ] fonpublisher Especifica o local em que 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 Editor.

Valores do 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 de 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 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á sendo processado. Se sp_check_for_sync_trigger retornar 1, o gatilho definido pelo usuário será encerrado. Isso assegura que o gatilho definido pelo usuário não seja disparado quando o gatilho de replicação atualizar a tabela.

Exemplos

a. Adicionar código a um gatilho em uma tabela do 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 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

sp_check_for_sync_trigger procedimento armazenado pode ser executado por qualquer usuário com permissões SELECT na exibição do sistema sys.objects .

Consulte Também

Updatable Subscriptions for Transactional Replication