Veröffentlichen von Daten und Datenbankobjekten
Aktualisiert: 14. April 2006
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 | Snapshotreplikation 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 |
Sichten |
X |
X |
Indizierte Sichten |
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 |
Erstellen von Publikationen
Beim Erstellen einer Publikation sind die folgenden Informationen bereitzustellen:
- Verteiler
- Speicherort der Snapshotdateien
- Publikationsdatenbank
- Typ der zu erstellenden Publikation (Snapshotpublikation, Transaktionspublikation, Transaktionspublikation mit aktualisierbaren Abonnements oder Mergepublikation)
- Daten und Datenbankobjekte (Artikel), die in die Publikation aufgenommen werden sollen
- statische Zeilenfilter und Spaltenfilter (alle Publikationstypen) sowie parametrisierte Zeilenfilter und Verknüpfungsfilter (Mergepublikationen)
- Zeitplan für den Snapshot-Agent
- Die Konten, unter denen die folgenden Agents ausgeführt werden: Snapshot-Agent für alle Publikationen; Protokolllese-Agent für alle Transaktionspublikationen; Warteschlangenlese-Agent für Transaktionspublikationen mit aktualisierbaren Abonnements.
- Name und Beschreibung der Publikation
So erstellen Sie Publikationen und definieren Artikel
- Microsoft SQL Server Management Studio: Vorgehensweise: Erstellen einer Publikation und Definieren von Artikeln (SQL Server Management Studio)
- Replikation mit Transact-SQL-Programmierung: How to: Create a Publication (Replication Transact-SQL Programming) und How to: Define an Article (Replication Transact-SQL Programming)
- RMO-Programmierung (Replikationsverwaltungsobjekte): How to: Create a Publication (RMO Programming) und How to: Define an Article (RMO Programming)
So ändern Sie Publikationen und Artikel
- SQL Server Management Studio: Vorgehensweise: Anzeigen und Ändern der Eigenschaften von Publikationen und Artikeln (SQL Server Management Studio)
- Replikation mit Transact-SQL-Programmierung: How to: View and Modify Publication Properties (Replication Transact-SQL Programming) und How to: View and Modify Article Properties (Replication Transact-SQL Programming)
- RMO-Programmierung (Replikationsverwaltungsobjekte): How to: View and Modify Publication Properties (RMO Programming) und How to: View and Modify Article Properties (RMO Programming)
So löschen Sie Publikationen und Artikel
- SQL Server Management Studio: Vorgehensweise: Löschen einer Publikation (SQL Server Management Studio)
- Replikation mit Transact-SQL-Programmierung: How to: Delete a Publication (Replication Transact-SQL Programming) und How to: Delete an Article (Replication Transact-SQL Programming)
- RMO-Programmierung (Replikationsverwaltungsobjekte):How to: Delete an Article (RMO Programming)
Hinweis: |
---|
Beim Löschen eines Artikels oder einer Publikation werden die Objekte nicht vom Abonnenten entfernt. |
Veröffentlichen von Tabellen
Tabellen sind die Objekte, die am häufigsten veröffentlicht werden. In den folgenden Themen finden Sie weiterführende Informationen zu Fragen im Zusammenhang mit dem Veröffentlichen von Tabellen:
- Filtern von veröffentlichten Daten
- Artikeloptionen für die Transaktionsreplikation
- Artikeloptionen für die Mergereplikation
- Replizieren von Identitätsspalten
Beim Veröffentlichen einer Tabelle für die Replikation können Sie angeben, welche Schemaobjekte auf den Abonnenten kopiert werden sollen, z. B. deklarierte referenzielle Integrität (PRIMARY KEY-Einschränkungen, Referenzeinschränkungen, eindeutige Einschränkungen), Indizes, Benutzer-DML-Trigger (DDL-Trigger können nicht repliziert werden), erweiterte Eigenschaften und Sortierungen. Erweiterte Eigenschaften werden nur bei der Erstsynchronisierung von Verleger und Abonnent repliziert. Wenn Sie eine erweiterte Eigenschaft nach der Erstsynchronisierung hinzufügen oder ändern, wird die Änderung nicht repliziert.
So geben Sie Schemaoptionen an
- SQL Server Management Studio: Vorgehensweise: Angeben von Schemaoptionen (SQL Server Management Studio)
- Replikationsprogrammierung mit Transact-SQL: How to: Specify Schema Options (Replication Transact-SQL Programming)
- RMO-Programmierung: SchemaOption
Partitionierte Tabellen und Indizes
Wenn partitionierte Tabellen und Indizes veröffentlicht werden, werden die folgenden Objekte auf jeden Abonnenten kopiert:
Objekt | Erstellt mit |
---|---|
Partitionierte Tabelle oder partitionierter Index |
CREATE TABLE oder CREATE INDEX |
Partitionsfunktion |
CREATE PARTITION FUNCTION |
Partitionsschema |
CREATE PARTITION SCHEME |
Die Abonnenteninstanz muss bereits die Dateigruppen enthalten, in der die partitionierten Tabellen platziert werden sollen. Nach der Initialisierung des Abonnenten werden die Datenänderungen an den Abonnenten weitergegeben und auf die entsprechenden Partitionen angewendet. SQL Server unterstützt keine Änderungen an partitionierten Tabellen und Indizes, die repliziert werden: Sie können ALTER PARTITION FUNCTION oder ALTER PARTITION SCHEME nicht aufrufen, und Sie können die SWITCH PARTITION-Anweisung von ALTER TABLE oder die REBUILD WITH PARTITION-Anweisung von ALTER INDEX nicht verwenden.
Veröffentlichen gespeicherter Prozeduren
Das Replizieren von Definitionen für gespeicherte Prozeduren ist bei allen Replikationstypen möglich: Die CREATE PROCEDURE wird auf jeden Abonnenten kopiert. Bei CLR-gespeicherten Prozeduren (Common Language Runtime) wird auch die zugehörige Assembly kopiert. Änderungen an den Prozeduren werden auf die Abonnenten repliziert, während Änderungen an den zugehörigen Assemblys nicht repliziert werden.
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. Dies ist bei der Replikation der Ergebnisse von wartungsorientierten gespeicherten Prozeduren hilfreich, die sich möglicherweise auf große Datenmengen auswirken. Weitere Informationen finden Sie unter Veröffentlichen der Ausführung von gespeicherten Prozeduren in der Transaktionsreplikation.
Veröffentlichen von Sichten
Das Replizieren von Sichten ist bei allen Replikationstypen möglich. Dabei kann die Sicht (und der zugehörige Index, sofern es sich um eine indizierte Sicht handelt) auf den Abonnenten kopiert werden, in jedem Fall muss aber auch die Basistabelle repliziert werden.
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 How to: Define an Article (Replication Transact-SQL Programming).
Veröffentlichen benutzerdefinierter Funktionen
Die CREATE FUNCTION-Anweisungen für CLR-Funktionen und Transact-SQL-Funktionen werden auf alle Abonnenten kopiert. Bei CLR-Funktionen wird auch die zugehörige Assembly kopiert. Änderungen an den Funktionen werden auf die Abonnenten repliziert, während Änderungen an den zugehörigen Assemblys nicht repliziert werden.
Veröffentlichen von benutzerdefinierten Typen und Aliasdatentypen
Spalten, die benutzerdefinierte Typen oder Aliasdatentypen verwenden, werden genauso wie alle anderen Spalten auf die Abonnenten repliziert. Auf dem Abonnenten wird für jeden replizierten Typ die CREATE TYPE -Anweisung ausgeführt, bevor die Tabelle erstellt wird. Bei benutzerdefinierten Typen wird auch die zugehörige Assembly auf alle Abonnenten kopiert. Änderungen an benutzerdefinierten Typen oder Aliasdatentypen werden nicht auf die Abonnenten repliziert.
Wenn ein Typ in einer Datenbank definiert, beim Erstellen einer Publikation aber nicht in einer Spalte referenziert ist, wird der Typ nicht auf die Abonnenten kopiert. Wenn Sie später in der Datenbank eine Spalte dieses Typs erstellen und diesen Typ replizieren möchten, müssen Sie zunächst manuell den Typ (und bei benutzerdefiniertem Typ die zugehörige Assembly) auf alle 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 an Volltextindizes, die mit ALTER FULLTEXT INDEX 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. Bei den folgenden Schemaänderungen an veröffentlichten Objekten auf einem SQL Server-Verleger werden die Änderungen standardmäßig an alle SQL Server-Abonnenten weitergegeben:
- ALTER TABLE
- ALTER VIEW
- ALTER PROCEDURE
- ALTER FUNCTION
- ALTER TRIGGER
Weitere Informationen finden Sie unter Vornehmen von Schemaänderungen in Publikationsdatenbanken.
Überlegungen zum Veröffentlichen
Beachten Sie beim Veröffentlichen von Datenbankobjekten Folgendes:
- Die Benutzer können während der Erstellung der Publikation und des Anfangssnapshots weiter auf die Datenbank zugreifen. Es empfiehlt sich aber, für das Erstellen von Publikationen Zeiten mit geringerem Verkehrsaufkommen auf dem Verleger auszuwählen.
- Datenbanken können nicht mehr umbenannt werden, nachdem in ihnen eine Publikation erstellt wurde. Wenn eine solche Datenbank umbenannt werden soll, müssen Sie zunächst die Replikation aus der Datenbank entfernen. Weitere Informationen finden Sie unter Entfernen der Replikation.
- Wenn Sie ein Datenbankobjekt veröffentlichen, das von mindestens einem weiteren Datenbankobjekt abhängt, müssen Sie alle Objekte veröffentlichen, auf die verwiesen wird. So müssen Sie beispielsweise im Falle einer Sicht, die von einer Tabelle abhängt, auch die Tabelle veröffentlichen.
Hinweis: Wenn Sie einer Mergepublikation einen Artikel hinzufügen und ein vorhandener Artikel von diesem neuen Artikel abhängt, müssen Sie mithilfe des @processing_order-Parameters von sp_addmergearticle und sp_changemergearticle eine Verarbeitungsreihenfolge für die beiden Artikel angeben. Stellen Sie sich als Beispiel das folgende Szenario vor: Sie veröffentlichen eine Tabelle, aber nicht die Funktion, auf die die Tabelle verweist. Wenn Sie die Funktion nicht veröffentlichen, kann die Tabelle auf dem Abonnenten nicht erstellt werden. Nehmen Sie beim Hinzufügen der Funktion zur Publikation die folgenden Angaben vor: Geben Sie für den @processing_order-Parameter von sp_addmergearticle den Wert 1 an, geben Sie für den @processing_order-Parameter von sp_changemergearticle den Wert 2 an, und geben Sie für den @article-Parameter den Tabellennamen 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: % * [ ] | : " ? \ / < >.
Beschränkungen für das Veröffentlichen von Objekten
- Die maximale Anzahl von Artikeln und Spalten, die veröffentlicht werden können, ist je nach Publikationstyp unterschiedlich. Weitere Informationen finden Sie im Abschnitt zum Replizieren von Objekten unter Spezifikationen der maximalen Kapazität für SQL Server 2005.
- Gespeicherte Prozeduren, Sichten, Trigger und benutzerdefinierte Funktionen, die mit WITH ENCRYPTION definiert wurden, können nicht als Teil der SQL Server-Replikation veröffentlicht werden.
- Es ist möglich, XML-Schemaauflistungen zu replizieren, Änderungen werden aber nach dem Anfangssnapshot nicht mehr repliziert.
- Für die Transaktionsreplikation veröffentlichte Tabellen müssen einen Primärschlüssel haben. Befindet sich eine Tabelle in einer Transaktionsreplikationspublikation, können die Indizes, die mit Primärschlüsselspalten verknüpft sind, nicht deaktiviert werden, weil diese Indizes von der Replikation benötigt werden. Wenn Sie einen Index deaktivieren möchten, müssen Sie zuerst die Tabelle aus der Publikation löschen.
- Mit sp_bindefault (Transact-SQL) erstellte gebundene Standardwerte werden nicht repliziert (gebundene Standardwerte werden als veraltet markiert und statt dessen Standardwerte verwendet, die mit dem DEFAULT-Schlüsselwort ALTER TABLE bzw. CREATE TABLE erstellt werden).
Schemas und Objektbesitz
Die Replikation weist im Assistenten für neue Publikation hinsichtlich der Schemas und des Objektbesitzes das folgende Standardverhalten auf:
- Für Artikel in Mergepublikationen mit einem Kompatibilitätsgrad von mindestens 90, Publikationssnapshots und Transaktionspublikationen gilt: Standardmäßig entspricht der Objektbesitzer auf dem Abonnenten dem Besitzer des entsprechenden Objekts auf dem Verleger. Wenn die Schemas, die Objekte besitzen, auf dem Abonnenten nicht vorhanden sind, werden sie automatisch erstellt.
- Für Artikel in Mergepublikationen 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-Publikationen: Standardmäßig wird der Besitzer mit dbo angegeben.
- Für Artikel in Publikationen, die Zeichenmodus-Snapshots verwenden (werden für Nicht-SQL Server-Abonnenten und SQL Server 2005 Compact Edition-Abonnenten verwendet): Standardmäßig wird der Besitzer leer gelassen. Als Besitzer wird standardmäßig der Besitzer festgelegt, der dem Konto zugeordnet ist, über das der Verteilungs-Agent bzw. der Merge-Agent die Verbindung mit dem Abonnenten herstellt.
Der Objektbesitzer kann im Dialogfeld Artikeleigenschaften - <Article> und über folgende gespeicherte Prozeduren festgelegt werden: sp_addarticle, sp_addmergearticle, sp_changearticle und sp_changemergearticle. Weitere Informationen finden Sie unter Vorgehensweise: Anzeigen und Ändern der Eigenschaften von Publikationen und Artikeln (SQL Server Management Studio), How to: Define an Article (Replication Transact-SQL Programming) und How to: View and Modify Article Properties (Replication Transact-SQL Programming).
Veröffentlichen von Daten auf Abonnenten, auf denen eine frühere Version von SQL Server ausgeführt wird
- Wenn Sie Daten auf einem Abonnenten veröffentlichen, auf dem eine frühere Version von SQL Server ausgeführt wird, steht nur die Funktionalität dieser früheren Version zur Verfügung, und zwar sowohl hinsichtlich der replikationsspezifischen Funktionalität als auch der Funktionalität des Produkts als Ganzes. So ist es z. B. nicht möglich, benutzerdefinierte Datentypen oder CLR-Funktionen auf Abonnenten zu veröffentlichen, auf denen SQL Server 2000 ausgeführt wird.
- Bei Mergepublikationen richten sich die Features, die in einer Publikation verwendet werden können, nach dem Kompatibilitätsgrad. Dank dieses Publikationstyps können auch Abonnenten unterstützt werden, auf denen eine frühere Version von SQL Server ausgeführt wird.
Weitere Informationen finden Sie unter Verwenden mehrerer Versionen von SQL Server in einer Replikationstopologie.
Veröffentlichen von Tabellen in mehreren Publikationen
Die Replikation unterstützt das Veröffentlichen von Artikeln in mehreren Publikationen (darunter auch das erneute Veröffentlichen von Daten), wobei die folgenden Einschränkungen gelten:
Wenn ein Artikel in einer Transaktionspublikation und in einer Mergepublikation veröffentlicht wird, müssen Sie sicherstellen, dass für den Mergeartikel für die @published_in_tran_pub-Eigenschaft TRUE festgelegt ist. Weitere Informationen zum Festlegen von Eigenschaften finden Sie unter Vorgehensweise: Anzeigen und Ändern der Eigenschaften von Publikationen und Artikeln (SQL Server Management Studio) und How to: View and Modify Article Properties (Replication Transact-SQL Programming).
Sie sollten außerdem die @published_in_tran_pub-Eigenschaft festlegen, wenn ein Artikel Bestandteil eines Transaktionsabonnements und in einer Mergepublikation enthalten ist. Beachten Sie in diesem Fall, dass bei der Transaktionsreplikation Tabellen auf dem Abonnenten standardmäßig als schreibgeschützt behandelt werden. Werden bei der Mergereplikation Datenänderungen an einer Tabelle in einem Transaktionsabonnement vorgenommen, kann es zu einer Nichtkonvergenz der Daten kommen. Um dies zu vermeiden, empfiehlt es sich, solche Tabellen in der Mergepublikation als "nur downloadbar" zu kennzeichnen. Dadurch wird verhindert, dass ein Mergeabonnent Datenänderungen in die Tabelle uploadet. Weitere Informationen finden Sie unter Optimieren der Leistung der Mergereplikation durch nur downloadbare Artikel.Ein Artikel kann nicht gleichzeitig in einer Mergepublikation und in einer Transaktionspublikation mit Abonnements mit verzögerter Aktualisierung über eine Warteschlange veröffentlicht werden.
Artikel in Transaktionspublikationen, die Abonnements mit Aktualisierung unterstützen, können nicht erneut veröffentlicht werden.
Wenn ein Artikel in mehreren Transaktionspublikationen veröffentlicht wird, die Abonnements mit verzögertem Aktualisieren über eine Warteschlage unterstützen, müssen die folgenden Eigenschaften für den Artikel in allen Publikationen denselben Wert aufweisen:
Eigenschaft Parameter in 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 ein Artikel in mehreren Mergepublikationen veröffentlicht wird, müssen die folgenden Eigenschaften für den Artikel in allen Publikationen denselben Wert aufweisen:
Eigenschaft Parameter in 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).
Die Transaktionsreplikation und die ungefilterte Mergereplikation unterstützen das Veröffentlichen einer Tabelle in mehreren Publikationen und das anschließende Abonnieren innerhalb einer einzelnen Tabelle in der Abonnementdatenbank (üblicherweise als Rollupszenario bezeichnet). Rollup wird häufig zum Aggregieren von Teilsätzen von Daten aus mehreren Speicherorten in einer Tabelle auf einem zentralen Abonnenten verwendet. Gefilterte Mergepublikationen unterstützen das Szenario mit einem zentralen Abonnenten nicht. Bei der Mergereplikation wird das Rollup typischerweise über eine einzelne Publikation mit parametrisierten Zeilenfiltern implementiert. Weitere Informationen finden Sie unter Parametrisierte Zeilenfilter.
Siehe auch
Konzepte
Hinzufügen und Löschen von Artikeln bei vorhandenen Publikationen
Konfigurieren der Verteilung
Initialisieren eines Abonnements
Entfernen der Replikation
Erstellen von Skripts für die Replikation
Sichern des Verlegers
Abonnieren von Publikationen
Andere Ressourcen
Implementieren der Replikation
Hilfe und Informationen
Informationsquellen für SQL Server 2005
Änderungsverlauf
Version | Verlauf |
---|---|
14. April 2006 |
|