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 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 Angeben von Schemaoptionen.
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 Bei Mergereplikationen wird der Befehl SWITCH PARTITION von ALTER TABLE nicht unterstützt, bei Transaktionsreplikationen hingegen schon, wie im folgenden Abschnitt beschrieben wird.
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. 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.
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 bei den Verlegern 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 hilfreich, wenn Sie alte Monate aus der Partition auslagern möchten und die replizierte Partition jedoch für ein weiteres Jahr für Sicherungszwecke auf dem Abonnenten aufbewahren möchten.
Vorsicht |
---|
Sie sollten keinen Partitionswechsel für Peer-zu-Peer-Veröffentlichungen aktivieren, da die ausgeblendete Spalte dazu verwendet wird, um Konflikte zu erkennen und aufzulösen. |
Aktivieren des Partitionswechsels
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.