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.
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 possibili valori 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. Se è 0, la posizione di esecuzione corrisponde al Sottoscrittore, mentre se è 1 la posizione di esecuzione corrisponde al 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.