Verwalten von Partitionen für eine Mergeveröffentlichung mit parametrisierten Filtern

Gilt für:SQL Server

In diesem Thema wird beschrieben, wie Partitionen für eine Zusammenführungsveröffentlichung mit parametrisierten Filtern in SQL Server mithilfe von SQL Server Management Studio, Transact-SQL oder Replication Management Objects (RMO) verwaltet werden. Mithilfe parametrisierter Zeilenfilter können nicht überlappende Partitionen generiert werden. Diese Partitionen können eingeschränkt werden, sodass nur ein Abonnement eine bestimmte Partition erhält. In solchen Fällen führt eine große Anzahl von Abonnenten zu einer großen Anzahl von Partitionen, was wiederum eine gleiche Anzahl von partitionierten Momentaufnahmen erforderlich macht. Weitere Informationen zu parametrisierten Zeilenfiltern finden Sie unter Parametrisierte Zeilenfilter.

In diesem Thema

Vorbereitungen

Empfehlungen

  • Wenn Sie, wie empfohlen, ein Skript für eine Replikationstopologie erstellen, enthalten die Veröffentlichungsskripts die Aufrufe der gespeicherten Prozedur zum Erstellen von Datenpartitionen. Die Skripts stellen einen Verweis für die erstellten Partitionen bereit und ermöglichen das erneute Erstellen von Partitionen, falls dies erforderlich wird. Weitere Informationen finden Sie unter Scripting Replication.

  • Wenn eine Veröffentlichung parametrisierte Filter aufweist, die Abonnements mit nicht überlappenden Partitionen ergeben, und ein bestimmtes Abonnement verloren gegangen ist und neu erstellt werden muss, müssen Sie wie folgt vorgehen: Entfernen Sie die Partition, die abonniert wurde, erstellen Sie das Abonnement neu, und erstellen Sie dann die Partition neu. Weitere Informationen zu parametrisierten Zeilenfiltern finden Sie unter Parametrisierte Zeilenfilter. Durch Replikation werden Erstellungsskripts für vorhandene Abonnentenpartitionen generiert, wenn ein Erstellungsskript für eine Veröffentlichung generiert wird. Weitere Informationen finden Sie unter Scripting Replication.

Verwendung von SQL Server Management Studio

Verwalten von Partitionen auf der Seite "Datenpartitionen " des Dialogfelds "Publikationseigenschaften - <Publikation> ". Weitere Informationen zum Zugreifen auf dieses Dialogfeld finden Sie unter View and Modify Publication Properties. Auf dieser Seite können Sie Partitionen erstellen und löschen, Abonnenten ermöglichen, die Momentaufnahmegenerierung und -bereitstellung zu initialisieren, Momentaufnahmen für eine oder mehrere Partitionen generieren und einen Cleanup von Momentaufnahmen ausführen.

So erstellen Sie eine Partition

  1. Klicken Sie auf der Seite 'Datenpartitionen' der Publikationseigenschaften<- Publikationsdialogfeld> auf 'Hinzufügen'.

  2. Geben Sie im Dialogfeld Datenpartition hinzufügen einen Wert für den HOST_NAME() - und/oder SUSER_SNAME() -Parameter für die Partition ein, die Sie erstellen möchten.

  3. Optional können Sie einen Zeitplan für das Aktualisieren von Momentaufnahmen angeben:

    1. Aktivieren Sie die Option Ausführung des Momentaufnahme-Agents für diese Partition zu folgenden Zeitpunkten planen.

    2. Akzeptieren Sie den Standardzeitplan für die Aktualisierung von Momentaufnahmen, oder klicken Sie auf Ändern , um einen anderen Zeitplan anzugeben.

  4. Klickan Sie auf OK.

So löschen Sie eine Partition

  1. Wählen Sie in der Tabelle auf der Seite Datenpartitionen die gewünschte Partition aus.

  2. Klicken Sie auf Löschen.

So lassen Sie zu, dass Abonnenten die Momentaufnahmegenerierung und -übermittlung starten

  1. Aktivieren Sie auf der Seite Datenpartitionen die Option Bei Bedarf automatisch eine Partition definieren und eine Momentaufnahme generieren, wenn ein neuer Abonnent zu synchronisieren versucht.

  2. Klickan Sie auf OK.

So generieren Sie eine Momentaufnahme für eine Partition

  1. Wählen Sie in der Tabelle auf der Seite Datenpartitionen die gewünschte Partition aus.

  2. Klicken Sie auf Die ausgewählten Momentaufnahmen jetzt generieren.

So führen Sie einen Cleanup einer Momentaufnahme für eine Partition aus

  1. Wählen Sie in der Tabelle auf der Seite Datenpartitionen die gewünschte Partition aus.

  2. Klicken Sie auf Cleanup der vorhandenen Momentaufnahmen ausführen.

Verwenden von Transact-SQL

Sie können die vorhandenen Partitionen mithilfe gespeicherter Replikationsprozeduren programmgesteuert aufzählen, um eine Veröffentlichung mit parametrisierten Filtern besser verwalten zu können. Zudem können Sie Partitionen erstellen und vorhandene Partitionen löschen. Die folgenden Informationen zu vorhandenen Partitionen können abgerufen werden:

  • Wie eine Partition gefiltert wird (mithilfe von SUSER_SNAME (Transact-SQL) oder HOST_NAME (Transact-SQL)).

  • Der Name des Auftrags, der eine partitionierte Momentaufnahme generiert.

  • Das Datum der letzten Ausführung eines Auftrags für eine partitionierte Momentaufnahme.

Während der zweite Teil der zweiteiligen Momentaufnahme bedarfsgerecht generiert werden kann, wenn ein neues Abonnement initialisiert wird, können Sie mithilfe der nachfolgenden Anweisungen die Generierung dieser Momentaufnahme steuern und die Momentaufnahme im Voraus zu einem beliebigen Zeitpunkt erstellen. Weitere Informationen finden Sie unter Snapshots for Merge Publications with Parameterized Filters.

So zeigen Sie Informationen zu vorhandenen Partitionen an

  1. Führen Sie im Publisher in der Publikationsdatenbank sp_helpmergepartition (Transact-SQL) aus. Geben Sie den Namen der Veröffentlichung für @publication an. (Optional) Geben Sie @suser_sname oder @host_name an, damit nur Informationen basierend auf einem einzelnen Filterkriterium zurückgegeben werden.

So können Sie eine neue Partition definieren und eine neue partitionierte Momentaufnahme generieren

  1. Führen Sie im Publisher in der Publikationsdatenbank sp_addmergepartition (Transact-SQL) aus. Geben Sie den Namen der Veröffentlichung für @publication und den parametrisierten Wert an, der die Partition für eines der folgenden Elemente definiert:

  2. Erstellen und initialisieren Sie die parametrisierte Momentaufnahme für diese neue Partition. Weitere Informationen finden Sie unter Erstellen einer Momentaufnahme für eine Mergeveröffentlichung mit parametrisierten Filtern.

So löschen Sie eine Partition

  1. Führen Sie im Publisher in der Publikationsdatenbank sp_dropmergepartition (Transact-SQL) aus. Geben Sie den Namen der Veröffentlichung für @publication und den parametrisierten Wert an, der die Partition für eines der folgenden Elemente definiert:

    Dadurch werden zudem der Momentaufnahmeauftrag und alle Momentaufnahmedateien für die Partition entfernt.

Verwenden von Replikationsverwaltungsobjekten (RMO)

Um eine Veröffentlichung mit parametrisierten Filtern besser verwalten zu können, können Sie programmgesteuert neue Abonnentenpartitionen erstellen, die vorhandenen Abonnentenpartitionen aufzählen und Abonnentenpartitionen mithilfe von Replikationsverwaltungsobjekten (RMO) entfernen. Informationen zum Erstellen von Abonnentenpartitionen finden Sie unter Erstellen einer Momentaufnahme für eine Mergeveröffentlichung mit parametrisierten Filtern. Die folgenden Informationen zu vorhandenen Partitionen können abgerufen werden:

  • Der Wert und die Filterfunktion, auf dem bzw. der die Partition basiert.

  • Der Name des Auftrags, der eine parametrisierte Momentaufnahme für den Abonnenten generiert.

  • Das Datum der letzten Ausführung eines Auftrags für eine parametrisierte Momentaufnahme.

So zeigen Sie Informationen zu vorhandenen Partitionen an

  1. Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection -Klasse verwenden.

  2. Erstellen Sie eine Instanz der MergePublication-Klasse. Legen Sie die Name -Eigenschaft und die DatabaseName -Eigenschaft für die Veröffentlichung fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte ServerConnection fest.

  3. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode falsezurückgibt, sind die Veröffentlichungseigenschaften in Schritt 2 falsch definiert, oder die Veröffentlichung ist nicht vorhanden.

  4. Rufen Sie die EnumMergePartitions -Methode auf, und übergeben Sie das Ergebnis an ein Array von MergePartition -Objekten.

  5. Rufen Sie für jedes MergePartition -Objekt im Array alle gewünschten Eigenschaften ab.

So löschen Sie vorhandene Partitionen

  1. Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection -Klasse verwenden.

  2. Erstellen Sie eine Instanz der MergePublication-Klasse. Legen Sie die Name -Eigenschaft und die DatabaseName -Eigenschaft für die Veröffentlichung fest, und legen Sie die ConnectionContext -Eigenschaft auf die in Schritt 1 erstellte ServerConnection fest.

  3. Rufen Sie die LoadProperties -Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode falsezurückgibt, sind die Veröffentlichungseigenschaften in Schritt 2 falsch definiert, oder die Veröffentlichung ist nicht vorhanden.

  4. Rufen Sie die EnumMergePartitions -Methode auf, und übergeben Sie das Ergebnis an ein Array von MergePartition -Objekten.

  5. Bestimmen Sie für jedes MergePartition -Objekt im Array, ob die Partition gelöscht werden soll. Diese Entscheidung basiert normalerweise auf dem Wert der DynamicFilterLogin -Eigenschaft oder der DynamicFilterHostName -Eigenschaft.

  6. Rufen Sie die RemoveMergePartition -Methode für das MergePublication -Objekt aus Schritt 2 auf. Übergeben Sie das MergePartition -Objekt aus Schritt 5.

  7. Wiederholen Sie Schritt 6 für jede zu löschende Partition.

Weitere Informationen

Parameterized Row Filters
Momentaufnahmen für eine Mergeveröffentlichung mit parametrisierten Filtern