sp_check_for_sync_trigger (Transact-SQL)

Bestimmt, ob ein benutzerdefinierter Trigger oder eine benutzerdefinierte gespeicherte Prozedur im Kontext eines Replikationstriggers aufgerufen wird, der für sofort aktualisierbare Abonnements verwendet wird. Diese gespeicherte Prozedur wird auf dem Verleger für die Veröffentlichungsdatenbank oder auf dem Abonnenten für die Abonnementdatenbank ausgeführt.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • [@tabid = ] 'tabid'
    Die Objekt-ID der Tabelle, die auf sofort aktualisierbare Trigger überprüft wird. tabid ist vom Datentyp int und hat keinen Standardwert.

  • [@trigger_op = ] 'trigger_output_parameters' OUTPUT
    Gibt an, ob der Ausgabeparameter den Typ des Triggers zurückgeben soll, von dem aus der Aufruf erfolgt. trigger_output_parameters ist vom Datentyp char(10). Die folgenden Werte sind möglich:

    Wert

    Beschreibung

    Ins

    INSERT-Trigger

    Upd

    UPDATE-Trigger

    Del

    DELETE-Trigger

    NULL (Standard)

  • [ @fonpublisher = ] fonpublisher
    Gibt an, wo die gespeicherte Prozedur ausgeführt wird. fonpublisher ist vom Datentyp bit und hat den Standardwert 0. Bei 0 findet die Ausführung auf dem Abonnenten und bei 1 auf dem Verleger statt.

Rückgabecodewerte

0 zeigt an, dass die gespeicherte Prozedur nicht im Kontext eines sofort aktualisierbaren Triggers aufgerufen wird. 1 zeigt an, dass sie im Kontext eines sofort aktualisierbaren Triggers aufgerufen wird, dessen Typ in @trigger_op zurückgegeben wird.

Hinweise

sp_check_for_sync_trigger wird bei der Snapshot- und Transaktionsreplikation verwendet.

sp_check_for_sync_trigger wird für die Koordination zwischen Replikationstriggern und benutzerdefinierten Triggern verwendet. Diese gespeicherte Prozedur bestimmt, ob sie im Kontext eines Replikationstriggers aufgerufen wird. So können Sie beispielsweise die Prozedur sp_check_for_sync_trigger im Text eines benutzerdefinierten Triggers aufrufen. Wenn sp_check_for_sync_trigger0 zurückgibt, setzt der benutzerdefinierte Trigger die Verarbeitung fort. Wenn sp_check_for_sync_trigger1 zurückgibt, wird der benutzerdefinierte Trigger beendet. So wird sichergestellt, dass der benutzerdefinierte Trigger nicht ausgelöst wird, wenn der Replikationstrigger die Tabelle aktualisiert.

Beispiel

Im folgenden Beispiel wird Code dargestellt, der in einem Trigger in der Abonnententabelle verwendet werden kann.

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

Der Code kann auch einem Trigger in einer Tabelle auf dem Verleger hinzugefügt werden. Der Code ist ähnlich, jedoch ist im Aufruf von sp_check_for_sync_trigger ein zusätzlicher Parameter enthalten.

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

Berechtigungen

Die gespeicherte Prozedur sp_check_for_sync_trigger kann von jedem Benutzer mit SELECT-Berechtigungen in der sys.objects-Systemsicht ausgeführt werden.