sys.sp_check_for_sync_trigger (Transact-SQL)

Aplica-se a: SQL ServerAzure SQL Managed Instance

Determina se um gatilho definido pelo utilizador ou procedimento armazenado está a ser chamado no contexto de um disparador de replicação, que é usado para atualizações imediatas de subscrições. Este procedimento armazenado é executado no Publisher na base de dados de publicações ou no Assinante na base de dados de subscrição.

Transact-SQL convenções de sintaxe

Syntax

sys.sp_check_for_sync_trigger
    [ @tabid = ] tabid
    [ , [ @trigger_op = ] 'trigger_op' OUTPUT ]
    [ , [ @fonpublisher = ] fonpublisher ]
[ ; ]

Arguments

[ @tabid = ] tabid

O ID do objeto da tabela está a ser verificado para gatilhos de atualização imediata. @tabid é int, sem padrão.

[ @trigger_op = ] 'trigger_op' SAÍDA

Especifica se o parâmetro de saída deve devolver o tipo de trigger de onde está a ser chamado. @trigger_op é um OUTPUT parâmetro do tipo char(10), e pode ser um desses valores.

Value Description
Ins INSERT disparador
Upd UPDATE disparador
Del DELETE disparador
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 é realizada no Publisher.

Valores de código de retorno

0 indica que o procedimento armazenado não está a ser chamado no contexto de um gatilho de atualização imediata. 1 indica que está a ser chamado no contexto de um gatilho de atualização imediata e é o tipo de gatilho que está a ser devolvido em @trigger_op.

Remarks

sp_check_for_sync_trigger é usado na replicação instantânea e na replicação transacional.

sp_check_for_sync_trigger é usado para coordenar entre a replicação e os gatilhos definidos pelo utilizador. Este procedimento armazenado determina se está a ser chamado no contexto de um gatilho de replicação. Por exemplo, pode chamar o procedimento sp_check_for_sync_trigger no corpo de um gatilho definido pelo utilizador. Se sp_check_for_sync_trigger devolver 0, o gatilho definido pelo utilizador continua a processar. Se sp_check_for_sync_trigger devolver 1, o gatilho definido pelo utilizador encerra. Isto garante que o gatilho definido pelo utilizador não dispare quando o gatilho de replicação atualiza a tabela.

Examples

A. Adicionar código a um gatilho numa tabela de subscritores

O exemplo seguinte mostra código que poderia ser usado num gatilho numa tabela de assinantes.

DECLARE @retcode INT,
    @trigger_op CHAR(10),
    @table_id INT;

SELECT @table_id = object_id('tablename');

EXECUTE
    @retcode = sp_check_for_sync_trigger
    @table_id,
    @trigger_op OUTPUT;

IF @retcode = 1
    RETURN;

B. Adicionar código a um gatilho numa tabela Publisher

O código também pode ser adicionado a um gatilho numa tabela no Publisher; o código é semelhante, mas a chamada inclui sp_check_for_sync_trigger 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;

EXECUTE
    @retcode = sp_check_for_sync_trigger
    @table_id,
    @trigger_op OUTPUT,
    @fonpublisher;

IF @retcode = 1
    RETURN;

Permissions

Qualquer utilizador com SELECT permissões na vista de sistema sys.objects pode executar sp_check_for_sync_trigger.