Steuern von Einschränkungen, Identitäten und Triggern mithilfe von NOT FOR REPLICATION

In einigen Fällen ist es in einer Replikationstopologie vorteilhaft, wenn die Benutzeraktivität anders behandelt wird als die Agentaktivität. Beispiel: Eine Zeile wird von einem Benutzer auf dem Verleger eingefügt, und diese Einfügung erfüllt eine CHECK-Einschränkung für die Tabelle. Es ist dann gegebenenfalls nicht erforderlich, dieselbe Einschränkung zu erzwingen, wenn die Zeile von einem Replikations-Agent auf dem Abonnenten eingefügt wird. Mithilfe der Option NOT FOR REPLICATION können Sie angeben, dass die folgenden Datenbankobjekte unterschiedlich behandelt werden, wenn ein Replikations-Agent einen Vorgang ausführt:

  • FOREIGN KEY-Einschränkungen

    Bei Einfügungs-, Aktualisierungs- oder Löschvorgängen durch den Replikations-Agent wird die FOREIGN KEY-Einschränkung nicht erzwungen.

  • CHECK-Einschränkungen

    Bei Einfügungs-, Aktualisierungs- oder Löschvorgängen durch den Replikations-Agent wird die CHECK-Einschränkung nicht erzwungen.

  • Identitätsspalten

    Der Wert der Identitätsspalte wird nicht inkrementiert, wenn ein Replikations-Agent einen Einfügungsvorgang ausführt.

  • Trigger

    Bei Einfügungs-, Aktualisierungs- oder Löschvorgängen durch den Replikations-Agent wird die CHECK-Einschränkung nicht erzwungen.

Wenn eine Tabelle veröffentlicht wird, steuern Schemaoptionen, wie Objekte in der Abonnementdatenbank erstellt werden. Die Standardschemaoptionen unterscheiden sich je nach Veröffentlichung. Wenn Optionen so festgelegt sind, dass FOREIGN KEY- und CHECK-Einschränkungen in der Abonnementdatenbank erstellt werden, muss die NOT FOR REPLICATION-Option festgelegt sein.Die Option NOT FOR REPLICATION wird auch festgelegt, wenn Identitätsspalten in Mergeveröffentlichungen und Transaktionsveröffentlichungen repliziert werden, die aktualisierbare Abonnements unterstützen. Weitere Informationen zur Replikation von Identitätsspalten finden Sie unter Replizieren von Identitätsspalten.

In den meisten Fällen sind die Standardeinstellungen zweckdienlich, sie können jedoch den Anforderungen der Anwendung entsprechend geändert werden. Am meisten zu berücksichtigen sind Trigger. Wenn Sie z. B. einen INSERT-Trigger definieren und die Option NOT FOR REPLICATION festgelegt ist, werden bei allen Einfügungen von Benutzern Trigger ausgelöst, nicht jedoch bei Einfügungen von Replikations-Agents. Angenommen, ein Trigger fügt Daten in eine Nachverfolgungstabelle ein: Wenn der Benutzer die ursprüngliche Zeile einfügt, muss der Trigger ausgelöst werden und eine Zeile in die Nachverfolgungstabelle eintragen. Der Trigger sollte jedoch nicht ausgelöst werden, wenn diese Daten auf dem Abonnenten repliziert werden, da sonst eine überflüssige Zeile in die Nachverfolgungstabelle eingefügt wird.

So geben Sie die Option NOT FOR REPLICATION an

Sie haben folgende Möglichkeiten, die Option NOT FOR REPLICATION anzugeben: