Steuern von Einschränkungen, Identitäten und Triggern mithilfe von NOT FOR REPLICATION
Aktualisiert: 15. September 2007
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.
Beim Veröffentlichen einer Tabelle steuern Schemaoptionen, wie Objekte in der Abonnementdatenbank erstellt werden. Die Standardschemaoptionen sind je nach Veröffentlichung verschieden. Wenn durch Optionen angegeben wird, dass FOREIGN KEY-Einschränkungen und CHECK-Einschränkungen in der Abonnementdatenbank erstellt werden, wird die Option NOT FOR REPLICATION festgelegt. Die Option NOT FOR REPLICATION wird auch festgelegt, wenn Identitätsspalten in Mergepublikationen und Transaktionspublikationen 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:
- Sie verwenden Schemaoptionen der Replikation. Weitere Informationen finden Sie unter Vorgehensweise: Angeben von Schemaoptionen (SQL Server Management Studio) und How to: Specify Schema Options (Replication Transact-SQL Programming).
- Direkt in der Transact-SQL-Syntax oder in Microsoft SQL Server Management Studio, wenn Sie folgende Vorgänge ausführen:
- Erstellen oder Ändern eines Objekts in der Publikationsdatenbank.
- Erstellen oder Ändern eines Objekts in der Abonnementdatenbank. Objekte werden in der Regel nur dann manuell erstellt (statt durch Replikation), wenn ein Abonnement ohne Snapshot initialisiert wird.
Weitere Informationen finden Sie in den folgenden Themen: - CREATE TABLE (Transact-SQL), ALTER TABLE (Transact-SQL), CREATE TRIGGER (Transact-SQL) und ALTER TRIGGER (Transact-SQL)
- Vorgehensweise: Deaktivieren von Fremdschlüsseleinschränkungen für die Replikation (Visual Database Tools)
- Vorgehensweise: Deaktivieren von CHECK-Einschränkungen für die Replikation (Visual Database Tools)
Siehe auch
Konzepte
Überlegungen zu allen Replikationstypen
Hilfe und Informationen
Informationsquellen für SQL Server 2005
Änderungsverlauf
Version | Verlauf |
---|---|
15. September 2007 |
|