Freigeben über


sp_check_for_sync_trigger (Transact-SQL)

Gilt für: SQL Server Azure SQL Managed Instance

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 beim Publisher in der Publikationsdatenbank oder beim Abonnenten in der Abonnementdatenbank ausgeführt.

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 int ohne Standard.

[@trigger_op = ] 'trigger_output_parameters' AUSGABE
Gibt an, ob der Ausgabeparameter den Typ von Trigger zurückgeben muss, mit dem er aufgerufen wird. trigger_output_parameters ist Char(10) und kann einer dieser Werte sein.

Wert Beschreibung
EINGFG INSERT-Trigger
Aufwärts UPDATE-Trigger
Del DELETE-Trigger
NULL (Standard)

[ @fonpublisher = ] fonpublisher Gibt den Speicherort an, an dem die gespeicherte Prozedur ausgeführt wird. fonpublisher ist bit, mit dem 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 gibt an, dass sie im Kontext eines Sofortaktualisierungstriggers aufgerufen wird und der Typ des Triggers ist, der in @trigger_op zurückgegeben wird.

Hinweise

sp_check_for_sync_trigger wird in der Snapshotreplikation und transaktionsalen Replikation verwendet.

sp_check_for_sync_trigger wird verwendet, um zwischen Replikation und benutzerdefinierten Triggern zu koordinieren. Diese gespeicherte Prozedur bestimmt, ob sie im Kontext eines Replikationstriggers aufgerufen wird. Sie können beispielsweise die Prozedur sp_check_for_sync_trigger im Textkörper eines benutzerdefinierten Triggers aufrufen. Wenn sp_check_for_sync_trigger "0" zurückgibt, wird die Verarbeitung des benutzerdefinierten Triggers fortgesetzt. Wenn sp_check_for_sync_trigger 1 zurückgibt, wird der benutzerdefinierte Trigger beendet. So wird sichergestellt, dass der benutzerdefinierte Trigger nicht ausgelöst wird, wenn der Replikationstrigger die Tabelle aktualisiert.

Beispiele

A. Hinzufügen von Code zu einem Trigger in einer Abonnententabelle

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  

B. Hinzufügen von Code zu einem Trigger in einer Publisher-Tabelle

Der Code kann auch einem Trigger in einer Tabelle im Publisher hinzugefügt werden. Der Code ist ähnlich, aber der Aufruf von sp_check_for_sync_trigger enthält einen zusätzlichen Parameter.

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

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

Weitere Informationen

Updatable Subscriptions for Transactional Replication