Condividi tramite


sp_check_for_sync_trigger (Transact-SQL)

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

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

  • [@tabid = ] 'tabid'
    ID di oggetto della tabella in cui vengono controllati i trigger per l'aggiornamento immediato. tabid è di tipo int e non prevede alcun valore predefinito.

  • [@trigger_op = ] 'trigger_output_parameters' OUTPUT
    Specifica se il parametro di output restituisce il tipo di trigger da cui viene richiamato. trigger_output_parameters è di tipo char(10). I valori possibili sono i seguenti.

    Valore

    Descrizione

    Ins

    Trigger INSERT

    Upd

    Trigger UPDATE

    Del

    Trigger DELETE

    NULL (predefinito)

  • [ @fonpublisher = ] fonpublisher
    Specifica la posizione in cui viene eseguita la stored procedure. fonpublisher è di tipo bit e il valore predefinito è 0. 0 indica che l'esecuzione avviene nel Sottoscrittore, mentre 1 indica che avviene nel server di pubblicazione.

Valori restituiti

0 indica che la stored procedure non viene richiamata nel contesto di un trigger per l'aggiornamento immediato. 1 indica che la stored procedure viene richiamata nel contesto di un trigger per l'aggiornamento immediato e corrisponde al tipo di trigger restituito in @trigger\_op.

Osservazioni

La stored procedure sp_check_for_sync_trigger viene utilizzata per la replica snapshot e transazionale.

La stored procedure sp_check_for_sync_trigger viene utilizzata per coordinare le replica e i trigger definiti dall'utente. Questa stored procedure determina se viene richiamata nel contesto di un trigger di replica. Ad esempio, è possibile richiamare la procedura sp_check_for_sync_trigger nel corpo di un trigger definito dall'utente. Se sp_check_for_sync_trigger restituisce 0, l'elaborazione del trigger definito dall'utente prosegue. Se sp_check_for_sync_trigger restituisce 1, l'elaborazione del trigger definito dall'utente viene interrotta. Ciò garantisce che il trigger definito dall'utente non venga attivato quando il trigger di replica aggiorna la tabella.

Esempio

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

È inoltre possibile aggiungere tale codice 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

La stored procedure sp_check_for_sync_trigger può essere eseguita da qualsiasi utente che disponga di autorizzazioni SELECT per la vista di sistema sys.objects.

Vedere anche

Concetti

Sottoscrizioni aggiornabili per la replica transazionale