sp_check_for_sync_trigger (Transact-SQL)
Gilt für: SQL Server Azure SQL Managed Instance
Bestimmt, ob ein benutzerdefinierter Trigger oder eine gespeicherte Prozedur im Kontext eines Replikationstriggers aufgerufen wird, der für die sofortige Aktualisierung von 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_op' OUTPUT ]
[ , [ @fonpublisher = ] fonpublisher ]
[ ; ]
Argumente
[ @tabid = ] tabid
Die Objekt-ID der Tabelle, die auf sofortige Aktualisierungstrigger überprüft wird. @tabid ist "int" ohne Standard.
[ @trigger_op = ] 'trigger_op' OUTPUT
Gibt an, ob der Ausgabeparameter den Typ des Triggers zurückgeben soll, von dem er aufgerufen wird. @trigger_op ist ein OUTPUT-Parameter vom Typ Char(10) und kann einer dieser Werte sein.
Wert | Beschreibung |
---|---|
Ins |
INSERT auslösen |
Upd |
UPDATE auslösen |
Del |
DELETE auslösen |
NULL (Standard) |
[ @fonpublisher = ] fonpublisher
Gibt die Position an, an der die gespeicherte Prozedur ausgeführt wird. @fonpublisher ist bit, mit einem Standardwert von 0
.
- Wenn
0
, die Ausführung befindet sich am Abonnenten. - Wenn
1
, die Ausführung befindet sich im Publisher.
Rückgabecodewerte
0 gibt an, dass die gespeicherte Prozedur nicht im Kontext eines Triggers für die sofortige Aktualisierung 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 Momentaufnahmereplikation und Transaktionsreplikation 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
dieser Wert zurückgegeben wird 0
, wird die Verarbeitung des benutzerdefinierten Triggers fortgesetzt. Wenn sp_check_for_sync_trigger
dieser Wert zurückgegeben 1
wird, wird der benutzerdefinierte Trigger beendet. Dadurch 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, der Aufruf enthält sp_check_for_sync_trigger
jedoch 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
Jeder Benutzer mit SELECT
Berechtigungen in der Systemansicht "sys.objects " kann ausgeführt werden sp_check_for_sync_trigger
.