Condividi tramite


sp_check_for_sync_trigger (Transact-SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure

Determina se viene chiamato un trigger o una stored procedure definita dall'utente nel contesto di un trigger di replica, usato per le sottoscrizioni ad aggiornamento immediato. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione o nel database di sottoscrizione del Sottoscrittore.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

[ @tabid = ] tabid

ID oggetto della tabella da controllare per i trigger di aggiornamento immediato. @tabid è int, senza impostazione predefinita.

[ @trigger_op = ] 'trigger_op' OUTPUT

Specifica se il parametro di output deve restituire il tipo di trigger da cui viene chiamato. @trigger_op è un parametro OUTPUT di tipo char(10) e può essere uno di questi valori.

valore Descrizione
Ins INSERT Grilletto
Upd UPDATE Grilletto
Del DELETE Grilletto
NULL (predefinito)

[ @fonpublisher = ] fonpublisher

Specifica la posizione in cui viene eseguita la stored procedure. @fonpublisher è bit, con il valore predefinito 0.

  • Se 0, l'esecuzione si trova nel Sottoscrittore.
  • Se 1, l'esecuzione si trova nel server di pubblicazione.

Valori del codice restituito

0 indica che la stored procedure non viene chiamata nel contesto di un trigger di aggiornamento immediato. 1 indica che viene chiamato nel contesto di un trigger ad aggiornamento immediato ed è il tipo di trigger restituito in @trigger_op.

Osservazioni:

sp_check_for_sync_trigger viene usato nella replica snapshot e nella replica transazionale.

sp_check_for_sync_trigger viene usato per coordinare la replica e i trigger definiti dall'utente. Questa stored procedure determina se viene chiamata nel contesto di un trigger di replica. Ad esempio, è possibile chiamare la routine sp_check_for_sync_trigger nel corpo di un trigger definito dall'utente. Se sp_check_for_sync_trigger restituisce 0, il trigger definito dall'utente continua l'elaborazione. Se sp_check_for_sync_trigger restituisce 1, il trigger definito dall'utente viene chiuso. Ciò garantisce che il trigger definito dall'utente non venga attivato quando il trigger di replica aggiorna la tabella.

Esempi

R. Aggiungere codice a un trigger in una tabella del Sottoscrittore

Nell'esempio seguente viene illustrato il codice che può essere utilizzato in un trigger in una tabella del Sottoscrittore.

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. Aggiungere codice a un trigger in una tabella del server di pubblicazione

Il codice può anche essere aggiunto a un trigger in una tabella nel server di pubblicazione; il codice è simile, ma la chiamata a sp_check_for_sync_trigger include un parametro aggiuntivo.

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;

Autorizzazioni

Qualsiasi utente con SELECT autorizzazioni nella vista di sistema sys.objects può eseguire sp_check_for_sync_trigger.