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
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 durch Verwendung von |
|---|---|
| Partitionierte Tabelle oder partitionierter Index | CREATE TABLE oder CREATE INDEX |
| Partitionsfunktion | CREATE PARTITION FUNCTION |
| Partitionsschema | CREATE PARTITION SCHEME |
Partitionierungseigenschaften sind die Artikelschemaoptionen, die bestimmen, ob Partitionierungsobjekte auf den Abonnenten kopiert werden sollen. Setzen Sie diese Schema-Optionen auf folgende Weise ein:
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 truean, um die in der obigen Tabelle aufgeführten Objekte zu kopieren. Informationen zum Zugriff auf die Seite Artikeleigenschaften finden Sie unter Anzeigen und Ändern von Veröffentlichungseigenschaften.
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 Specify Schema Options.
Durch die Replikation werden Objekte während der Erstsynchronisierung an den Abonnenten kopiert. Wenn im Partitionsschema andere Dateigruppen als die PRIMARY-Dateigruppe verwendet werden, müssen diese vor der anfänglichen Synchronisierung 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. Transaktionale und Merge-Replikation unterstützen keine Replikation der folgenden Befehle: ALTER PARTITION FUNCTION, ALTER PARTITION SCHEME, oder die REBUILD WITH PARTITION-Anweisung von ALTER INDEX. Die damit verbundenen Änderungen werden nicht automatisch auf den Abonnenten übertragen. Du musst ähnliche Änderungen manuell beim Abonnenten vornehmen.
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. Benutze den Befehl, SWITCH PARTITION um Daten zu verschieben. Standardmäßig blockiert das System SWITCH PARTITION Operationen, wenn Sie eine Tabelle für die Replikation aktivieren, und zwar aus den folgenden Gründen:
Wenn du Daten in eine Tabelle verschiebst oder aus einer Tabelle entfernst, die beim Publisher vorhanden ist, beim Subscriber jedoch nicht, könnten Publisher und Subscriber inkonsistent werden. Dieses Problem tritt typischerweise auf, wenn man Daten in eine Staging-Tabelle hinein- oder herausbewegt.
Wenn der Subscriber eine andere Definition für die partitionierte Tabelle hat als der Publisher, scheitert der Verteilungs-Agent, wenn er versucht, Änderungen beim Subscriber anzuwenden.
Trotz dieser möglichen Probleme können Sie Partitionswechsel für die transaktionale Replikation aktivieren. Bevor Sie den Partitionswechsel aktivieren, stellen Sie sicher, dass alle am Partitionswechsel beteiligten Tabellen im Publisher und Subscriber existieren und dass die Tabellen- und Partitionsdefinitionen identisch sind.
Wenn Partitionen bei den Herausgebern und Abonnenten über das gleiche Partitionsschema verfügen, können Sie allow_partition_switch zusammen mit replication_partition_switch aktivieren, wodurch nur die „partition switch“-Anweisung für den Abonnenten repliziert wird. Sie können auch allow_partition_switch aktivieren, ohne die DDL zu replizieren. Dies ist nützlich, wenn Sie ältere Monatsdaten aus der Partition entfernen möchten, die replizierte Partition beim Abonnenten jedoch zu Sicherungszwecken noch ein weiteres Jahr beibehalten möchten.
Wenn Sie den Partitionswechsel für SQL Server 2008 R2 über die aktuelle Version aktivieren, benötigen Sie möglicherweise in naher Zukunft auch Split- und Mergevorgänge. Bevor Sie eine Split- oder Merge-Operation auf einer replizierten oder CDC-fähigen Tabelle ausführen, stellen Sie sicher, dass die betreffende Partition keine ausstehenden replizierten Befehle enthält. Sie sollten außerdem sicherstellen, dass für die Partition während der Teilungs- und Mergevorgänge keine DML-Vorgänge ausgeführt werden. Wenn es Transaktionen gibt, die der Logleser oder CDC-Capture-Job nicht verarbeitet hat, oder wenn Sie DML-Operationen auf einer Partition einer replizierten oder CDC-fähigen Tabelle durchführen, während eine Split- oder Merge-Operation ausgeführt wird (mit derselben Partition), kann dies zu einem Verarbeitungsfehler (Fehler 608 – Kein Katalogeintrag für Partitions-ID gefunden) mit dem Log Reader Agent oder dem CDC-Capture-Job führen. Um den Fehler zu korrigieren, müssen Sie möglicherweise das Abonnement neu initialisieren oder CDC auf dieser Tabelle oder Datenbank deaktivieren.
Nicht unterstützte Szenarien
Die folgenden Szenarien werden bei der Verwendung von Replikation mit Partitionswechsel nicht unterstützt:
Peer-zu-Peer-Replikation
Peer-to-Peer-Replikation wird mit Partitionswechsel nicht unterstützt.
Verwenden von Variablen mit Partitionswechsel
Die Verwendung von Variablen mit Partitionswechsel auf Tabellen, die mit transaktionaler Replikation oder Change Data Capture (CDC) veröffentlicht wurden, wird für die Anweisung ALTER TABLE ... SWITCH TO ... PARTITION ... nicht unterstützt.
Zum Beispiel funktioniert der folgende Code für die Partitionsumschaltung nicht, wenn CDC für die Datenbank aktiviert ist oder wenn TableA Teil einer transaktionalen Veröffentlichung ist:
DECLARE @SomeVariable INT = $PARTITION.pf_test(10);
ALTER TABLE dbo.TableA
SWITCH TO dbo.TableB
PARTITION @SomeVariable;
Stattdessen tauschen Sie Ihre Partition direkt mit der Partitionsfunktion, wie im folgenden Beispiel:
ALTER TABLE NonPartitionedTable
SWITCH TO PartitionedTable PARTITION $PARTITION.pf_test(10);
Partitionswechsel aktivieren
Die folgenden Eigenschaften von transaktionalen Veröffentlichungen ermöglichen es Ihnen, das Verhalten des Partitionswechsels in einer replizierten Umgebung zu steuern:
@allow_partition_switch: Wenn die Option auftruegesetzt ist, können SieSWITCH PARTITIONfür die Publikationsdatenbank ausführen.@replicate_partition_switch: Bestimmt, ob dieSWITCH PARTITIONDDL-Anweisung an Abonnenten repliziert werden soll. Diese Option ist nur gültig, wenn@allow_partition_switchauftruefestgelegt ist.
Stellen Sie diese Eigenschaften ein, indem Sie sp_addpublication verwenden, wenn Sie die Publikation erstellen, oder indem Sie sp_changepublication verwenden, nachdem Sie die Publikation erstellt haben. Wie bereits erwähnt, unterstützt Merge-Replikation kein Partitionswechsel. Um SWITCH PARTITION auf einer Tabelle auszuführen, die für die Mergereplikation aktiviert ist, entfernen Sie die Tabelle aus der Publikation.