Replizieren partitionierter Tabellen und Indizes
Durch die Partitionierung können große Tabellen oder Indizes einfacher verwaltet werden, da Sie Teilmengen von Daten schnell und effizient verwalten und darauf zugreifen können und gleichzeitig die Integrität einer Datensammlung erhalten können. Weitere Informationen finden Sie unter Partitionierte Tabellen und Indizes. Die Replikation unterstützt die Partitionierung durch Bereitstellung einer Gruppe von Eigenschaften, die angeben, wie partitionierte Tabellen und Indizes behandelt werden sollen.
Artikeleigenschaften für die Transaktions- und Mergereplikation
In der folgenden Tabelle sind die Objekte aufgelistet, die zum Partitionieren von Daten verwendet werden.
Objekt |
Erstellt mit |
---|---|
Partitionierte Tabelle oder partitionierter Index |
CREATE TABLE oder CREATE INDEX |
Partitionsfunktion |
CREATE PARTITION FUNCTION |
Partitionsschema |
CREATE PARTITION SCHEME |
Die erste Gruppe von Eigenschaften, die mit der Partitionierung in Zusammenhang stehen, sind Artikelschemaoptionen, die bestimmen, ob Partitionierungsobjekte auf den Abonnenten kopiert werden sollen. Diese Schemaoptionen können folgendermaßen festgelegt werden:
Auf der Seite Artikeleigenschaften des Assistenten für neue Veröffentlichungen oder im Dialogfeld Veröffentlichungseigenschaften. Geben Sie für die Eigenschaften Tabellenpartitionierungsschemas kopieren und Indexpartitionierungsschemas kopieren den Wert true an, um die in der obigen Tabelle aufgeführten Objekte zu kopieren. Informationen zum Zugriff auf die Seite Artikeleigenschaften finden Sie unter Vorgehensweise: Anzeigen und Ändern der Eigenschaften von Veröffentlichungen und Artikeln (SQL Server Management Studio).
Mithilfe des Parameters schema_option einer der folgenden gespeicherten Prozeduren:
sp_addarticle oder sp_changearticle für die Transaktionsreplikation
sp_addmergearticle oder sp_changemergearticle für die Mergereplikation
Geben Sie die entsprechenden Schemaoptionswerte an, um die in der obigen Tabelle aufgelisteten Objekte zu kopieren. Informationen zum Angeben von Schemaoptionen finden Sie unter Vorgehensweise: Angeben von Schemaoptionen (Replikationsprogrammierung mit Transact-SQL).
Durch die Replikation werden Objekte während der Erstsynchronisierung auf den Abonnenten kopiert. Wenn im Partitionsschema andere Dateigruppen als die PRIMARY-Dateigruppe verwendet werden, müssen diese vor der Erstinitialisierung auf dem Abonnenten vorhanden sein.
Nachdem der Abonnent initialisiert wurde, werden Datenänderungen an den Abonnenten weitergegeben und auf die entsprechenden Partitionen übertragen. Änderungen am Partitionsschema werden jedoch nicht unterstützt. Bei Transaktions- und Mergereplikationen werden die folgenden Befehle nicht unterstützt: ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME bzw. die Anweisung REBUILD WITH PARTITION von ALTER INDEX Im Fall der Mergereplikationen wird der Befehl SWITCH PARTITION von ALTER TABLE nicht unterstützt, bei Transaktionsreplikationen hingegen schon, wie im folgenden Abschnitt beschrieben wird. Die Momentaufnahmereplikation erlaubt Änderungen am Partitionierungsschema, da die Momentaufnahme jedes Mal erneut initialisiert wird, wenn der Abonnent die Synchronisierung mit der Veröffentlichung ausführt.
Die Transaktionsreplikation und Mergereplikation unterstützen maximal 1024 Partitionen pro Tabelle oder Index.
Replikationsunterstützung für Partitionswechsel
Ein wesentlicher Vorteil der Tabellenpartitionierung besteht in der Fähigkeit, Teilmengen von Daten rasch und effizient zwischen Partitionen zu verschieben. Daten werden mit dem Befehl SWITCH PARTITION verschoben. Weitere Informationen finden Sie unter Effizientes Übertragen von Daten durch Partitionswechsel. Wenn eine Tabelle für die Replikation aktiviert wurde, werden SWITCH PARTITION-Vorgänge aus folgenden Gründen standardmäßig blockiert:
Wenn Daten in eine oder aus einer Tabelle verschoben werden, die auf dem Verleger, aber nicht auf dem Abonnenten vorhanden sind, können die Daten von Verleger und Abonnenten inkonsistent werden. Dieses Problem tritt i. d. R. auf, wenn Daten in eine oder aus einer Stagingtabelle verschoben werden.
Wenn der Abonnent über eine andere Definition für die partitionierte Tabelle verfügt als der Verleger, dann schlägt der Verteilungs-Agent fehl, wenn er Änderungen auf dem Abonnenten anzuwenden versucht. Dies ist auch ein Problem für SQL Server 2000-Abonnenten, da SQL Server 2000 keine partitionierten Tabellen unterstützt.
Trotz dieser potenziellen Probleme können Partitionswechsel für Transaktionsreplikationen aktiviert werden. Bevor Sie Partitionswechsel aktivieren, müssen Sie sicherstellen, dass alle an einem Partitionswechsel beteiligten Tabellen sowohl auf dem Verleger als auch auf dem Abonnenten vorhanden sind und dass die Tabellen- und Partitionsdefinitionen auf dem Verleger und dem Abonnenten identisch sind.
Wenn Partitionen über genau das gleiche Partitionsschema auf Verlegern und Abonnenten verfügen, können Sie allow_partition_switch zusammen mit replication_partition_switch aktivieren. In diesem Fall wird nur die SWITCH-Anweisung der Partition auf dem Abonnenten repliziert. Sie können auch allow_partition_switch aktivieren, ohne die DDL zu replizieren. Dies ist hilfreich, wenn Sie alte Monate aus der Partition entfernen möchten, die replizierte Partition für ein anderes Jahr jedoch beibehalten möchten, damit sie auf dem Abonnenten gesichert werden kann.
Vorsicht |
---|
Für Peer-zu-Peer-Veröffentlichungen sollte kein Partitionswechsel aktiviert werden. Der Grund hierfür ist die ausgeblendete Spalte, die zur Erkennung und Auflösung von Konflikten verwendet wird. |
Aktivieren des Partitionwechsels
Die folgenden Eigenschaften von Transaktionsveröffentlichungen ermöglichen es den Benutzern, das Verhalten von Partitionswechseln in einer replizierten Umgebung zu steuern:
@allow_partition_switch, wenn diese Eigenschaft auf true festgelegt wird, kann SWITCH PARTITION für die Veröffentlichungsdatenbank ausgeführt werden.
@replicate_partition_switch bestimmt, ob die SWITCH PARTITION DDL-Anweisung auf Abonnenten repliziert werden soll. Diese Option ist nur gültig, wenn @allow_partition_switch auf true festgelegt ist.
Sie können diese Eigenschaften beim Erstellen der Veröffentlichung mit sp_addpublication oder nach der Erstellung der Veröffentlichung mit sp_changepublication festlegen. Wie bereits erwähnt, unterstützen Mergereplikationen keine Partitionswechsel. Entfernen Sie die Tabelle aus der Datenbank, um SWITCH PARTITION für eine Tabelle auszuführen, die für Mergereplikationen aktiviert wurde.