Freigeben über


Veröffentlichen von Daten- und Datenbankobjekten

Beim Erstellen einer Publikation wählen Sie die Tabellen und andere Datenbankobjekte aus, die Sie veröffentlichen möchten. Sie können die folgenden Datenbankobjekte mithilfe der Replikation veröffentlichen.

Database-Objekt Snapshot-Replikation und Transaktionsreplikation Mergereplikation
Tabellen X X
Partitionierte Tabellen X X
Gespeicherte Prozeduren – Definition (Transact-SQL und CLR) X X
Gespeicherte Prozeduren – Ausführung (Transact-SQL und CLR) X nein
Ansichten X X
Indizierte Ansichten X X
Indizierte Ansichten als Tabellen X nein
User-Defined Typen (CLR) X X
User-Defined Funktionen (Transact-SQL und CLR) X X
Alias-Datentypen X X
Volltextindizes X X
Schemaobjekte (Einschränkungen, Indizes, BENUTZER-DML-Trigger, erweiterte Eigenschaften und Sortierung) X X

Erstellen von Publikationen

Zum Erstellen einer Publikation geben Sie die folgenden Informationen an:

  • Der Distributor.

  • Der Speicherort der Momentaufnahmedateien.

  • Die Publikationsdatenbank.

  • Der Publikationstyp, der erstellt werden soll (Schnappschuss, Transaktion, Transaktion mit aktualisierbaren Abonnements oder Zusammenführung).

  • Die Daten- und Datenbankobjekte (Artikel), die in die Publikation aufgenommen werden sollen.

  • Statische Zeilenfilter und Spaltenfilter für alle Arten von Publikationen sowie parametrisierte Zeilenfilter und Verknüpfungsfilter für Zusammenführungspublikationen.

  • Der Zeitplan des Snapshot-Agents.

  • Konten, unter denen die folgenden Agents ausgeführt werden: der Snapshot-Agent für alle Publikationen; der Log Reader Agent für alle Transaktionspublikationen; der Warteschlangenlese-Agent für Transaktionspublikationen, die das Aktualisieren von Abonnements ermöglichen.

  • Ein Name und eine Beschreibung für die Publikation.

Informationen zum Arbeiten mit Publikationen finden Sie in den folgenden Themen:

Hinweis

Durch das Löschen eines Artikels oder einer Publikation werden keine Objekte aus dem Abonnenten entfernt.

Veröffentlichungstabellen

Das am häufigsten veröffentlichte Objekt ist eine Tabelle. Die folgenden Links enthalten zusätzliche Informationen zu Bereichen im Zusammenhang mit Veröffentlichungstabellen:

Beim Veröffentlichen einer Tabelle für die Replikation können Sie angeben, welche Schemaobjekte in den Abonnenten kopiert werden sollen, z. B. deklarierte referenzielle Integrität (Primärschlüsseleinschränkungen, Referenzeinschränkungen, eindeutige Einschränkungen), Indizes, DML-Trigger des Benutzers (DDL-Trigger können nicht repliziert werden), erweiterte Eigenschaften und Sortierung. Erweiterte Eigenschaften werden nur in der anfänglichen Synchronisierung zwischen Publisher und Abonnenten repliziert. Wenn Sie nach der ersten Synchronisierung eine erweiterte Eigenschaft hinzufügen oder ändern, wird die Änderung nicht repliziert.

Informationen zum Angeben von Schemaoptionen finden Sie unter Angeben von Schemaoptionen oder SchemaOption.

Partitionierte Tabellen und Indizes

Die Replikation unterstützt die Veröffentlichung von partitionierten Tabellen und Indizes. Die Ebene der Unterstützung hängt vom Typ der verwendeten Replikation und den Optionen ab, die Sie für die Publikation und die Artikel angeben, die mit partitionierten Tabellen verknüpft sind. Weitere Informationen finden Sie unter Replizieren partitionierte Tabellen und Indizes.

Veröffentlichen gespeicherter Prozeduren

Mit allen Replikationstypen können Sie gespeicherte Prozedurdefinitionen replizieren: Die CREATE PROCEDURE-Anweisung wird in jeden Abonnent kopiert. Bei gespeicherten ClR-Prozeduren (Common Language Runtime) wird auch die zugeordnete Assembly kopiert. Änderungen an Prozeduren werden an Abonnenten repliziert; Änderungen an zugeordneten Assemblys werden nicht repliziert.

Zusätzlich zur Replikation der Definition einer gespeicherten Prozedur können Sie mit der Transaktionsreplikation die Ausführung gespeicherter Prozeduren replizieren. Dies ist hilfreich beim Replizieren der Ergebnisse wartungsorientierter gespeicherter Prozeduren, die sich auf große Datenmengen auswirken. Weitere Informationen finden Sie unter Veröffentlichung der Ausführung gespeicherter Prozeduren in der Transaktionsreplikation.

Veröffentlichungsansichten

Mit allen Replikationstypen können Sie Ansichten replizieren. Die Ansicht (und der zugehörige Index, wenn es sich um eine indizierte Ansicht handelt) kann in dem Abonnenten kopiert werden, aber die Basistabelle muss ebenfalls repliziert werden.

Bei indizierten Ansichten ermöglicht die Transaktionsreplikation auch die Replikation der indizierten Ansicht als Tabelle anstelle einer Ansicht, sodass die Basistabelle nicht mehr repliziert werden muss. Geben Sie hierzu eine der Optionen "protokollbasierte indizierte Ansicht" für den @type Parameter von sp_addarticle (Transact-SQL) an. Weitere Informationen zur Verwendung von sp_addarticle finden Sie unter Definieren eines Artikels.

Veröffentlichung der User-Defined-Funktionen

Die CREATE FUNCTION-Anweisungen für CLR-Funktionen und Transact-SQL-Funktionen werden an jeden Abonnenten kopiert. Bei CLR-Funktionen wird die zugeordnete Assembly ebenfalls kopiert. Änderungen an Funktionen werden an Abonnenten repliziert; Änderungen an zugeordneten Assemblys werden nicht repliziert.

Veröffentlichung von User-Defined-Datentypen und Aliasdatentypen

Spalten, die benutzerdefinierte Typen oder Aliasdatentypen verwenden, werden wie andere Spalten an Abonnenten repliziert. Die CREATE TYPE-Anweisung für jeden replizierten Typ wird beim Abonnenten ausgeführt, bevor die Tabelle erstellt wird. Bei benutzerdefinierten Typen wird die zugeordnete Assembly auch an jeden Abonnenten kopiert. Änderungen an benutzerdefinierten Typen und Alias-Datentypen werden bei den Abonnenten nicht repliziert.

Wenn ein Typ in einer Datenbank definiert ist, jedoch beim Erstellen einer Publikation in keiner Spalte darauf verwiesen wird, wird der Typ nicht zu den Abonnenten kopiert. Wenn Sie anschließend eine Spalte dieses Typs in der Datenbank erstellen und replizieren möchten, müssen Sie zuerst den Typ (und die zugeordnete Assembly für einen benutzerdefinierten Typ) manuell in jeden Abonnenten kopieren.

Veröffentlichen von Volltextindizes

Die CREATE FULLTEXT INDEX-Anweisung wird in jeden Abonnenten kopiert, und der Volltextindex wird beim Abonnenten erstellt. Änderungen, die an Volltextindizes mit ALTER FULLTEXT INDEX vorgenommen wurden, werden nicht repliziert.

Vornehmen von Schemaänderungen an veröffentlichten Objekten

Die Replikation unterstützt eine vielzahl von Schemaänderungen an veröffentlichten Objekten. Wenn Sie eine der folgenden Schemaänderungen für das entsprechende veröffentlichte Objekt in einem SQL Server Publisher vornehmen, wird diese Änderung standardmäßig an alle SQL Server-Abonnenten weitergegeben:

  • ALTER TABLE

  • ALTER VIEW

  • ALTER PROCEDURE

  • ALTER-FUNKTION

  • ALTER TRIGGER

Weitere Informationen finden Sie unter Vornehmen von Schemaänderungen in Veröffentlichungsdatenbanken.

Überlegungen zur Veröffentlichung

Beachten Sie beim Veröffentlichen von Datenbankobjekten die folgenden Probleme:

  • Die Datenbank ist während der Erstellung der Publikation und der anfänglichen Momentaufnahme für Benutzer zugänglich, es ist jedoch ratsam, Publikationen während zeiten niedrigerer Aktivitäten im Publisher zu erstellen.

  • Eine Datenbank kann nicht umbenannt werden, nachdem eine Publikation darin erstellt wurde. Um sie umzubenennen, müssen Sie zuerst die Replikation aus der Datenbank entfernen.

  • Wenn Sie ein Datenbankobjekt veröffentlichen, das von einem oder mehreren anderen Datenbankobjekten abhängt, müssen Sie alle referenzierten Objekte veröffentlichen. Wenn Sie beispielsweise eine Ansicht veröffentlichen, die von einer Tabelle abhängt, müssen Sie die Tabelle auch veröffentlichen.

    Hinweis

    Wenn Sie einer Zusammenführungsveröffentlichung einen Artikel hinzufügen und ein vorhandener Artikel vom neuen Artikel abhängt, müssen Sie eine Verarbeitungsreihenfolge für beide Artikel angeben, indem Sie den parameter @processing_order von sp_addmergearticle und sp_changemergearticle verwenden. Betrachten Sie das folgende Szenario: Sie veröffentlichen eine Tabelle, veröffentlichen aber keine Funktion, auf die die Tabelle verweist. Wenn Sie die Funktion nicht veröffentlichen, kann die Tabelle nicht beim Abonnenten erstellt werden. Wenn Sie der Publikation die Funktion hinzufügen: Geben Sie den Wert 1 für den @processing_order Parameter von sp_addmergearticle an; und geben Sie einen Wert von 2 für den @processing_order Parameter von sp_changemergearticle an, und geben Sie den Tabellennamen für den Parameter @article an. Diese Verarbeitungsreihenfolge stellt sicher, dass Sie die Funktion beim Abonnenten vor der Tabelle erstellen, die davon abhängt. Sie können für jeden Artikel unterschiedliche Zahlen verwenden, solange die Zahl für die Funktion niedriger ist als die Zahl für die Tabelle.

  • Publikationsnamen dürfen nicht die folgenden Zeichen enthalten: % * [ ] | : " ? \ / <>.

Einschränkungen bei Veröffentlichungsobjekten

  • Die maximale Anzahl von Artikeln und Spalten, die veröffentlicht werden können, unterscheidet sich je nach Publikationstyp. Weitere Informationen finden Sie im Abschnitt " Replikationsobjekte" der maximalen Kapazitätsspezifikationen für SQL Server.

  • Gespeicherte Prozeduren, Ansichten, Trigger und benutzerdefinierte Funktionen, die als WITH ENCRYPTION definiert sind, können nicht als Teil der SQL Server-Replikation veröffentlicht werden.

  • XML-Schemaauflistungen können repliziert werden, Änderungen werden jedoch nach der ersten Momentaufnahme nicht repliziert.

  • Für die Transaktionsreplikation veröffentlichte Tabellen müssen über einen Primärschlüssel verfügen. Wenn sich eine Tabelle in einer Transaktionsreplikationsveröffentlichung befindet, können Sie keine Indizes deaktivieren, die primärschlüsselspalten zugeordnet sind. weil diese Indizes von der Replikation benötigt werden. Um einen Index zu deaktivieren, müssen Sie die Tabelle zuerst aus der Publikation ablegen.

  • Gebundene Standardwerte, die mit sp_bindefault (Transact-SQL) erstellt wurden, werden nicht repliziert (gebundene Standardwerte sind zugunsten von Standardeinstellungen veraltet, die mit dem DEFAULT-Schlüsselwort von ALTER TABLE oder CREATE TABLE erstellt wurden).

  • Funktionen, die den NOEXPAND Hinweis auf indizierte Ansichten enthalten, können aufgrund der Reihenfolge, in der sie vom Verteilungs-Agent übermittelt werden, nicht in derselben Publikation wie die referenzierten Tabellen und indizierten Ansichten veröffentlicht werden. Um dieses Problem zu umgehen, platzieren Sie die Erstellung der Tabelle und der indizierten Ansicht in einer ersten Publikation, und fügen Sie Funktionen hinzu, die den NOEXPAND Hinweis auf die indizierten Ansichten zu einer zweiten Publikation enthalten, die Sie nach Abschluss der ersten Publikation veröffentlichen. Oder erstellen Sie Skripts für diese Funktionen, und stellen Sie das Skript mithilfe des @post_snapshot_script Parameters von sp_addpublication.

Schemas und Objektbesitz

Die Replikation weist das folgende Standardverhalten im Assistenten für neue Publikation in Bezug auf Schemas und Objektbesitz auf:

  • Für Artikel in Seriendruckpublikationen mit einer Kompatibilitätsstufe von 90 oder höher, Snapshotpublikationen und Transaktionspublikationen: Standardmäßig entspricht der Objektbesitzer beim Abonnenten dem Besitzer des entsprechenden Objekts im Publisher. Wenn die Schemas, die eigene Objekte besitzen, beim Abonnenten nicht vorhanden sind, werden sie automatisch erstellt.

  • Für Artikel in Zusammenführungspublikationen mit einer Kompatibilitätsstufe unter 90: Standardmäßig bleibt der Besitzer leer und wird während der Erstellung des Objekts beim Abonnenten als dbo angegeben.

  • Für Artikel in Oracle-Publikationen: Standardmäßig wird der Besitzer als dbo angegeben.

  • Für Artikel in Publikationen, die Momentaufnahmen im Zeichenmodus verwenden (die für Nicht-SQL Server-Abonnenten und SQL Server Compact-Abonnenten verwendet werden): Standardmäßig ist das Feld der Besitzereigenschaft leer. Der Besitzer wird standardmäßig mit dem Besitzer des Kontos verbunden, das vom Verteilungs-Agent oder Merge-Agent verwendet wird, um eine Verbindung zum Abonnenten herzustellen.

Der Objektbesitzer kann über das Dialogfeld "Artikeleigenschaften – <Artikel> " und über die folgenden gespeicherten Verfahren geändert werden: sp_addarticle, sp_addmergearticle, sp_changearticle und sp_changemergearticle. Weitere Informationen finden Sie unter Anzeigen und Ändern von Publikationseigenschaften, Definieren eines Artikels und Anzeigen und Ändern von Artikeleigenschaften.

Veröffentlichen von Daten für Abonnenten, die frühere Versionen von SQL Server ausführen

  • Wenn Sie eine Veröffentlichung in einem Abonnenten ausführen, der eine frühere Version von SQL Server ausführt, sind Sie auf die Funktionalität dieser Version beschränkt, sowohl hinsichtlich der replikationsspezifischen Funktionalität als auch der Funktionalität des Produkts als Ganzes.

  • Zusammenführen von Publikationen verwenden eine Kompatibilitätsstufe, die bestimmt, welche Features in einer Publikation verwendet werden können, und ermöglicht es Ihnen, Abonnenten zu unterstützen, die frühere Versionen von SQL Server ausführen.

Veröffentlichen von Tabellen in mehr als einer Publikation

Replikation unterstützt die Veröffentlichung von Artikeln in mehreren Publikationen (einschließlich neuer Veröffentlichungsdaten) mit den folgenden Einschränkungen:

  • Wenn ein Artikel in einer Transaktionsveröffentlichung und einer Zusammenführungsveröffentlichung veröffentlicht wird, stellen Sie sicher, dass die eigenschaft @published_in_tran_pub für den Seriendruckartikel auf TRUE festgelegt ist. Weitere Informationen zum Festlegen von Eigenschaften finden Sie unter "Eigenschaften der Ansicht" und "Ändern von Publikationseigenschaften"und "Ansicht" und "Ändern von Artikeleigenschaften".

    Sie sollten auch die eigenschaft @published_in_tran_pub festlegen, wenn ein Artikel Teil eines Transaktionsabonnements ist und in einer Zusammenführungsveröffentlichung enthalten ist. Wenn dies der Fall ist, beachten Sie, dass die Transaktionsreplikation standardmäßig erwartet, dass Tabellen am Abonnenten schreibgeschützt behandelt werden. wenn die Zusammenführungsreplikation Datenänderungen an einer Tabelle in einem Transaktionsabonnement vorgibt, kann die Nichtkonvergenz von Daten auftreten. Um diese Möglichkeit zu vermeiden, empfehlen wir, dass eine solche Tabelle nur als Download in der Seriendruckveröffentlichung angegeben wird. Dadurch wird verhindert, dass ein Merge-Abonnent Datenänderungen in die Tabelle hochlädt. Weitere Informationen finden Sie unter Optimieren der Leistung der Mergereplikation durch nur herunterladbare Artikel.

  • Ein Artikel kann nicht sowohl in einer Zusammenführungsveröffentlichung als auch in einer Transaktionsveröffentlichung mit in die Warteschlange eingereihten Aktualisierungsabonnements veröffentlicht werden.

  • Artikel, die in Transaktionspublikationen enthalten sind, die das Aktualisieren von Abonnements unterstützen, können nicht erneut veröffentlicht werden.

  • Wenn ein Artikel in mehr als einer Transaktionspublikation veröffentlicht wird, die in die Warteschlange eingereihte Abonnements unterstützt, müssen die folgenden Eigenschaften denselben Wert für den Artikel in allen Publikationen aufweisen:

    Eigentum Parameter in sp_addarticle
    Identitätsbereichsverwaltung @auto_identity_range (veraltet) und @identityrangemangementoption
    Herausgeberidentitätsbereich @pub_identity_range
    Identitätsbereich @identity_range
    Schwellenwert für den Identitätsbereich @threshold

    Weitere Informationen zu diesen Parametern finden Sie unter sp_addarticle (Transact-SQL).

  • Wenn ein Artikel in mehreren Zusammenführungspublikationen veröffentlicht wird, müssen die folgenden Eigenschaften für den Artikel in allen Publikationen denselben Wert aufweisen:

    Eigentum Parameter in sp_addmergearticle
    Spaltenverfolgung @column_tracking
    Schemaoptionen @schema_option
    Spaltenfilterung @vertical_partition
    Uploadoptionen für Abonnenten @subscriber_upload_options
    Nachverfolgung bedingter Löschung @delete_tracking
    Fehlerkompensation @compensate_for_errors
    Identitätsbereichsverwaltung @auto_identity_range (veraltet) und @identityrangemangementoption
    Herausgeberidentitätsbereich @pub_identity_range
    Identitätsbereich @identity_range
    Schwellenwert für den Identitätsbereich @threshold
    Partitionsoptionen @partition_options
    Blob-Spaltenstreaming @stream_blob_columns
    Filtertyp @filter_type (Parameter in sp_addmergefilter)

    Weitere Informationen zu diesen Parametern finden Sie unter sp_addmergearticle (Transact-SQL) und sp_addmergefilter (Transact-SQL).

  • Die Transaktionsreplikation und die ungefilterte Zusammenführungsreplikation unterstützen die Veröffentlichung einer Tabelle in mehreren Publikationen und das Anschließende Abonnieren innerhalb einer einzelnen Tabelle in der Abonnementdatenbank (allgemein als Rollupszenario bezeichnet). Das Rollup wird häufig zum Aggregieren von Teilmengen von Daten aus mehreren Speicherorten in einer Tabelle bei einem zentralen Abonnenten verwendet. Gefilterte Zusammenführungspublikationen unterstützen das zentrale Abonnentenszenario nicht. Bei zusammengeführter Replikation wird typischerweise ein Rollup über eine einzelne Publikation mit parametrisierten Zeilenfiltern implementiert. Weitere Informationen finden Sie unter Parameterisierte Zeilenfilter.

Siehe auch

Hinzufügen von Artikeln zu und Ablegen von Artikeln aus vorhandenen Publikationen
Verteilung konfigurieren
Initialisieren eines Abonnements
Skriptreplikation
Sichern des Herausgebers
Abonnieren von Veröffentlichungen