Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL Managed Instance
Wenn Sie eine Veröffentlichung erstellen möchten, können Sie die Tabellen und anderen Datenbankobjekte auswählen, die Sie veröffentlichen möchten. Mit einer Replikation können die folgenden Datenbankobjekte veröffentlicht werden:
| Datenbankobjekt | Momentaufnahmereplikation 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 Sichten als Tabellen | X | Nein |
| Benutzerdefinierte Typen (CLR) | X | X |
| Benutzerdefinierte Funktionen (Transact-SQL und CLR) | X | X |
| Aliasdatentypen | X | X |
| Volltextindizes | X | X |
| Schemaobjekte (Einschränkungen, Indizes, Benutzer-DML-Trigger, erweiterte Eigenschaften und Sortierung) | X | X |
Erstellung von Publikationen
Um eine Publikation zu erstellen, geben Sie folgende Informationen an:
- Der Distributor.
- Speicherort der Momentaufnahmedateien
- Veröffentlichungsdatenbank
- Typ der zu erstellenden Veröffentlichung (Momentaufnahmeveröffentlichung, Transaktionsveröffentlichung, Transaktionsveröffentlichung mit aktualisierbaren Abonnements oder Mergeveröffentlichung)
- Daten und Datenbankobjekte (Artikel), die in die Veröffentlichung aufgenommen werden sollen
- statische Zeilenfilter und Spaltenfilter (alle Veröffentlichungstypen) sowie parametrisierte Zeilenfilter und Joinfilter (Mergeveröffentlichungen)
- Zeitplan des Snapshot-Agenten
- Konten, unter denen die folgenden Agenten laufen: der Momentaufnahmen-Agent für alle Veröffentlichungen; der Log Reader Agent für alle transaktionalen Publikationen; der Queue Reader Agent für transaktionale Publikationen, die Aktualisierung von Abonnements ermöglichen.
- Name und Beschreibung der Veröffentlichung.
Informationen darüber, wie man mit Publikationen umgeht, finden Sie in den folgenden Artikeln:
- Erstellen einer Veröffentlichung
- Definieren eines Artikels
- Anzeigen und Ändern von Veröffentlichungseigenschaften
- Anzeigen und Ändern von Artikeleigenschaften
- Löschen einer Veröffentlichung
- Löschen eines Artikels
Hinweis
Das Löschen eines Artikels oder einer Veröffentlichung entfernt keine Objekte aus dem Subscriber.
Veröffentlichungstabellen
Tabellen sind die Objekte, die am häufigsten veröffentlicht werden. Die folgenden Links bieten weitere Informationen zum Veröffentlichen von Tabellen:
- Filtern von veröffentlichten Daten
- Artikeloptionen für die Transaktionsreplikation
- Artikeloptionen für die Mergereplikation
- Identitätsspalten replizieren
Wenn Sie eine Tabelle zur Replikation veröffentlichen, können Sie angeben, welche Schema-Objekte auf den Subscriber kopiert werden sollen, wie deklarierte referenzielle Integrität (Primärschlüssel-Constraints, Referenz-Constraints, eindeutige Constraints), Indizes, Benutzer-DML-Trigger (DDL-Trigger können nicht repliziert werden), erweiterte Eigenschaften und Kollation. Erweiterte Eigenschaften werden nur in der ersten Synchronisierung zwischen dem Verleger und dem 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
Replikation unterstützt das Veröffentlichen von partitionierten Tabellen und Indexen. Der Unterstützungsgrad hängt von der Art der Replikation ab, die Sie verwenden, und den Optionen, die Sie für die Publikation und die mit den Partitionierten Tabellen verbundenen Artikel festlegen. Weitere Informationen finden Sie unter Replicate Partitioned Tables and Indexes.
Veröffentlichen gespeicherter Prozeduren
Alle Arten der Replikation ermöglichen es, gespeicherte Prozedurdefinitionen zu replizieren: Die CREATE PROCEDURE Anweisung wird an jeden Abonnenten kopiert. Bei CLR-gespeicherten Prozeduren (Common Language Runtime) wird auch die zugehörige Assembly kopiert. Änderungen an Prozeduren werden an Abonnenten repliziert; Änderungen an zugehörigen Assemblies werden nicht repliziert.
Bei der Transaktionsreplikation ist jedoch nicht nur die Definition einer gespeicherten Prozedur replizierbar, sondern Sie können auch die Ausführung der gespeicherten Prozeduren replizieren. Diese Funktion ist nützlich, um die Ergebnisse wartungsorientierter gespeicherter Verfahren zu replizieren, die große Datenmengen betreffen. Weitere Informationen finden Sie unter Veröffentlichen der Ausführung gespeicherter Prozeduren in der Transaktionsreplikation.
Veröffentlichte Ansichten
Mit allen Replikationstypen können Sie Sichten replizieren. Du kannst die Ansicht und den zugehörigen Index (falls es sich um eine indizierte Ansicht handelt) auf den Abonnenten kopieren, aber du musst auch die Basistabelle replizieren.
Bei indizierten Sichten ist es bei der Transaktionsreplikation auch möglich, die indizierte Sicht als Tabelle und nicht als Sicht zu replizieren. Dadurch entfällt die Notwendigkeit, die Basistabelle mit zu replizieren. Geben Sie dazu eine der „indexed view logbased“-Optionen für den @type-Parameter von sp_addarticle (Transact-SQL) an. Weitere Informationen zum Verwenden von sp_addarticle finden Sie unter Define an Article.
Veröffentlichung benutzerdefinierter Funktionen
Die CREATE FUNCTION Anweisungen für CLR-Funktionen und Transact-SQL-Funktionen werden an jeden Abonnenten kopiert. Bei CLR-Funktionen wird auch die zugehörige Assembly kopiert. Änderungen an Funktionen werden an Abonnenten repliziert; Änderungen an zugehörigen Assemblies nicht.
Veröffentlichen von benutzerdefinierten Typen und Aliasdatentypen
Replikation behandelt Spalten, die benutzerdefinierte Typen oder Alias-Datentypen verwenden, wie andere Spalten und repliziert sie an Abonnenten. Der Prozess führt die CREATE TYPE Anweisung für jeden replizierten Typ beim Subscriber aus, bevor er die Tabelle erstellt. Für benutzerdefinierte Typen kopiert die Replikation auch die zugehörige Assembler an jeden Abonnenten. Bei der Replikation werden Änderungen an benutzerdefinierten Typen und Alias-Datentypen nicht an Abonnenten repliziert.
Wenn du einen Typ in einer Datenbank definierst, ihn aber beim Erstellen einer Publikation in keiner Spalte referenzierst, kopiert die Replikation den Typ nicht zu Abonnenten. Wenn Sie später eine Spalte dieses Typs in der Datenbank erstellen und replizieren möchten, müssen Sie zuerst den Typ (und die zugehörige Assembly für einen benutzerdefinierten Typ) manuell an jeden Abonnenten kopieren.
Veröffentlichen von Volltextindizes
Die CREATE FULLTEXT INDEX-Anweisung wird auf alle Abonnenten kopiert, und der Volltextindex wird auf dem Abonnenten erstellt. Änderungen, die an den verwendeten ALTER FULLTEXT INDEX Volltextindizes vorgenommen wurden, werden nicht repliziert.
Ausführen von Schemaänderungen an veröffentlichten Objekten
Die Replikation unterstützt eine breite Palette von Schemaänderungen an veröffentlichten Objekten. Wenn Sie eine der folgenden Schemaänderungen am entsprechenden veröffentlichten Objekt zu einem SQL Server Publisher vornehmen, verbreitet die Replikation diese Änderung standardmäßig an alle SQL Server Abonnenten:
ALTER TABLE
ALTER VIEW
ALTER PROCEDURE
ALTER FUNCTION
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 folgende Überlegungen:
Benutzer können während der Erstellung der Publikation und des ersten Schnappschusses auf die Datenbank zugreifen, aber am besten erstellen Sie Publikationen in Zeiten geringerer Aktivität im Publisher.
Du kannst eine Datenbank nicht umbenennen, nachdem du eine Publikation darin erstellt hast. Um die Datenbank umzubenennen, müssen Sie zunächst 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 Sicht veröffentlichen, die von einer Tabelle abhängt, muss auch die Tabelle veröffentlicht werden.
Hinweis
Wenn Sie einen Artikel zu einer Merge-Publikation hinzufügen und ein bestehender Artikel vom neuen Artikel abhängt, müssen Sie für beide Artikel eine Bearbeitungsreihenfolge angeben, indem Sie die @processing_order-Parametersp_addmergearticle und sp_changemergearticle verwenden. Betrachten Sie folgendes Szenario: Sie veröffentlichen eine Tabelle, aber Sie veröffentlichen keine Funktion, auf die die Tabelle verweist. Wenn Sie die Funktion nicht veröffentlichen, kann die Tabelle beim Subscriber nicht erstellt werden. Wenn Sie die Funktion einer Veröffentlichung hinzufügen, geben Sie einen Wert von 1 für den @processing_order -Parameter von sp_addmergearticlean, und geben Sie einen Wert von 2 für den @processing_order -Parameter von sp_changemergearticlean. Geben Sie dann den Tabellennamen für den @article-Parameter an. Durch diese Verarbeitungsreihenfolge wird sichergestellt, dass Sie die Funktion auf dem Abonnenten vor der Tabelle erstellen, die davon abhängt. Sie können unterschiedliche Nummern für jeden Artikel verwenden, solange die Nummer für die Funktion niedriger ist als die Nummer für die Tabelle.
Publikationsnamen dürfen die folgenden Zeichen nicht enthalten: % * [ ] | : " ? \ / <>.
Einschränkungen bei der Veröffentlichung von Objekten
Die maximale Anzahl der Artikel und Kolumnen, die Sie veröffentlichen können, variiert je nach Publikationstyp. Weitere Informationen finden Sie im Abschnitt „Replikationsobjekte“ Spezifikationen der maximalen Kapazität für SQL Server.
Man kann gespeicherte Prozeduren, Ansichten, Trigger und benutzerdefinierte Funktionen, die als MIT VERSCHLÜSSELUNG im Rahmen der SQL Server-Replikation definiert sind, nicht veröffentlichen.
Man kann XML-Schema-Sammlungen replizieren, aber Änderungen werden nach dem ersten Snapshot nicht repliziert.
Für die Transaktionsreplikation veröffentlichte Tabellen müssen einen Primärschlüssel haben. Wenn eine Tabelle in einer transaktionalen Replikationspublikation ist, können Sie keine Indizes deaktivieren, die mit Primärschlüsselspalten verknüpft sind. Replikation erfordert diese Indexe. Wenn Sie einen Index deaktivieren möchten, müssen Sie zuerst die Tabelle aus der Veröffentlichung löschen.
Gebundene Standardwerte, die mit sp_bindefault (Transact-SQL) erstellt wurden, werden nicht repliziert (gebundene Standardwerte sind veraltet; stattdessen werden Standardwerte verwendet, die mit dem DEFAULT-Schlüsselwort von ALTER TABLE oder CREATE TABLE erstellt werden).
Sie können keine Funktionen veröffentlichen, die den NOEXPAND-Hinweis für indizierte Ansichten enthalten, zusammen mit den referenzierten Tabellen und indizierten Ansichten in derselben Publikation, weil der Verteilungs-Agent sie in einer bestimmten Reihenfolge übermittelt. Um dieses Problem zu umgehen, nehmen Sie die Erstellung der Tabelle und der indizierten Ansichten in eine erste Veröffentlichung auf, und fügen Sie Funktionen, die den NOEXPAND-Hinweis für die indizierten Ansichten enthalten, zu einer zweiten Veröffentlichung hinzu, die Sie erst veröffentlichen, nachdem die erste Veröffentlichung abgeschlossen ist. Oder erstellen Sie Scripts für diese Funktionen und stellen Sie das Script über den @post_snapshot_script-Parameter von sp_addpublication bereit.
Schemas und Objektbesitz
Im Assistenten für neue Veröffentlichung weist die Replikation in Bezug auf Schemas und den Objektbesitz das folgende Standardverhalten auf:
Für Artikel in Mergeveröffentlichungen mit einem Kompatibilitätsgrad von 90 oder höher, Momentaufnahmeveröffentlichungen und Transaktionsveröffentlichungen gilt: Standardmäßig ist der Objekteigentümer beim Abonnenten derselbe wie der Eigentümer des entsprechenden Objekts beim Verleger. Wenn die Schemas, denen Objekte gehören, beim Abonnenten nicht vorhanden sind, werden sie automatisch erstellt.
Für Artikel in Mergeveröffentlichungen mit einem Kompatibilitätsgrad von unter 90: Standardmäßig wird der Besitzer leer gelassen und während der Erstellung des Objekts auf dem Abonnenten mit dbo angeben.
Für Artikel in Oracle-Veröffentlichungen: Standardmäßig wird der Besitzer mit dboangegeben.
Für Artikel in Veröffentlichungen, die Zeichenmodus-Momentaufnahmen verwenden (werden für Nicht-SQL Server-Abonnenten und SQL Server Compact-Abonnenten verwendet): Standardmäßig wird der Besitzer leer gelassen. Als Besitzer wird standardmäßig der Besitzer verwendet, der mit dem vom Verteilungs- oder Merge-Agent zum Herstellen einer Verbindung mit dem Abonnenten verwendeten Konto verknüpft ist.
Sie können den Objektbesitzer über das Dialogfeld Artikel Eigenschaften – <Artikel> sowie über die folgenden gespeicherten Verfahren ändern: sp_addarticle, sp_addmergearticle, sp_changearticle und sp_changemergearticle. Weitere Informationen finden Sie unter Anzeigen und Ändern von Veröffentlichungseigenschaften, Definieren eines Artikels und Anzeigen und Ändern von Artikeleigenschaften.
Veröffentlichen von Daten auf Abonnenten, auf denen eine frühere Version von SQL Server ausgeführt wird
Wenn du an einen Abonnenten veröffentlichst, der eine frühere Version von SQL Server nutzt, bist du auf die Funktionalität dieser Version beschränkt. Diese Einschränkung gilt sowohl für die Replikations-spezifische Funktionalität als auch für die Gesamtfunktionalität des Produkts.
Zusammenführende Publikationen verwenden ein Kompatibilitätsniveau, das bestimmt, welche Funktionen Sie in einer Publikation verwenden können, und ermöglicht es Ihnen, Abonnenten mit früheren Versionen von SQL Server zu unterstützen.
Veröffentlichungstabellen in mehr als einer Publikation
Replication unterstützt die Veröffentlichung von Artikeln in mehreren Publikationen, einschließlich der Neuveröffentlichung von Daten, mit folgenden Einschränkungen:
Wenn Sie einen Artikel sowohl in einer transaktionalen als auch in einer Merge-Publikation veröffentlichen, setzen Sie die @published_in_tran_pub-Eigenschaft für den Merge-Artikel auf TRUE. Weitere Informationen über Einstellungseigenschaften finden Sie unter Anzeigen und Ändern von Veröffentlichungseigenschaften und Anzeigen und Ändern von Artikeleigenschaften.
Setzen Sie die @published_in_tran_pub-Eigenschaft , wenn ein Artikel Teil eines transaktionalen Abonnements ist und in einer Merge-Publikation enthalten ist. Standardmäßig erwartet die transaktionale Replikation, dass Tabellen beim Abonnenten schreibgeschützt sind. Wenn Merge-Replikation Datenänderungen an einer Tabelle in einem transaktionalen Abonnement vornimmt, kann eine Nichtkonvergenz der Daten auftreten. Um dieses Problem zu vermeiden, geben Sie jede derartige Tabelle in der Merge-Publikation als Nur-Download an. Diese Einstellung 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.
Sie können einen Artikel nicht gleichzeitig in einer Merge-Publikation und in einer transaktionalen Publikation mit Abonnements mit Aktualisierung über Warteschlangen veröffentlichen.
Du kannst keine Artikel veröffentlichen, die in transaktionalen Publikationen enthalten sind und das Aktualisieren von Abonnements unterstützen.
Wenn Sie einen Artikel in mehr als einer transaktionalen Publikation veröffentlichen, die Warteschlangen-Aktualisierungsabonnements unterstützt, muss der Artikel für die folgenden Eigenschaften in allen Publikationen denselben Wert haben:
Eigenschaft Parameter von sp_addarticle Identitätsbereichsverwaltung @auto_identity_range (als veraltet markiert) und @identityrangemangementoption Identitätsbereich des Verlegers @pub_identity_range Identitätsbereich @identity_range Identitätsbereich-Schwellenwert @threshold Weitere Informationen zu diesen Parametern finden Sie unter sp_addarticle (Transact-SQL).
Wenn Sie einen Artikel in mehr als einer Merge-Publikation veröffentlichen, muss der Artikel denselben Wert für die folgenden Eigenschaften in allen Publikationen haben:
Eigenschaft Parameter für sp_addmergearticle Spaltennachverfolgung @column_tracking Schemaoptionen @schema_option Spaltenfilterung @vertical_partition Abonnentenuploadoptionen @subscriber_upload_options Bedingtes Nachverfolgen von Löschvorgängen @delete_tracking Fehlerkompensierung @compensate_for_errors Identitätsbereichsverwaltung @auto_identity_range (als veraltet markiert) und @identityrangemangementoption Identitätsbereich des Verlegers @pub_identity_range Identitätsbereich @identity_range Identitätsbereich-Schwellenwert @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).
Transaktionale Replikation und ungefilterte Merge-Replikation unterstützen das Veröffentlichen einer Tabelle in mehreren Publikationen und anschließend das Abonnement innerhalb einer einzelnen Tabelle in der Abonnementdatenbank (allgemein als Rollup-Szenario bezeichnet). Rollup wird häufig verwendet, um Teilmengen von Daten aus mehreren Standorten in einer Tabelle bei einem zentralen Abonnenten zu aggregieren. Gefilterte Merge-Publikationen unterstützen das zentrale Subscriber-Szenario nicht. Für die Merge-Replikation wird das Rollup typischerweise über eine einzelne Publikation mit parametrisierten Zeilenfiltern implementiert. Weitere Informationen zu parametrisierten Zeilenfiltern finden Sie unter Parametrisierte Zeilenfilter.