Verwalten von Partitionen für eine Mergeveröffentlichung mit parametrisierten Filtern
In diesem Thema wird beschrieben, wie Partitionen für eine Mergeveröffentlichung mit parametrisierten Filtern in SQL Server 2012 mit SQL Server Management Studio, Transact-SQL oder Replikationsverwaltungsobjekten (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 finden Sie unter Parametrisierte Zeilenfilter.
In diesem Thema
Vorbereitungen:
Empfehlungen
So verwalten Sie Partitionen für eine Mergeveröffentlichung mit parametrisierten Filtern mit:
SQL Server Management Studio
Transact-SQL
Replikationsverwaltungsobjekte (RMO)
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 Erstellen von Skripts für die Replikation.
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 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 Erstellen von Skripts für die Replikation.
[Top]
Verwendung von SQL Server Management Studio
Zum Verwalten von Partitionen steht Ihnen die Seite Datenpartitionen des Dialogfelds Veröffentlichungseigenschaften – <Veröffentlichung> zur Verfügung. Weitere Informationen zum Zugreifen auf dieses Dialogfeld finden Sie unter Anzeigen und Ändern von Veröffentlichungseigenschaften. 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
Klicken Sie auf der Seite Datenpartitionen des Dialogfelds Veröffentlichungseigenschaften – <Veröffentlichung> auf Hinzufügen.
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.
Optional können Sie einen Zeitplan für das Aktualisieren von Momentaufnahmen angeben:
Aktivieren Sie die Option Ausführung des Momentaufnahme-Agents für diese Partition zu folgenden Zeitpunkten planen.
Akzeptieren Sie den Standardzeitplan für die Aktualisierung von Momentaufnahmen, oder klicken Sie auf Ändern, um einen anderen Zeitplan anzugeben.
Klicken Sie auf OK.
So löschen Sie eine Partition
Wählen Sie in der Tabelle auf der Seite Datenpartitionen die gewünschte Partition aus.
Klicken Sie auf Löschen.
So lassen Sie zu, dass Abonnenten die Momentaufnahmegenerierung und -übermittlung starten
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.
Klicken Sie auf OK.
So generieren Sie eine Momentaufnahme für eine Partition
Wählen Sie in der Tabelle auf der Seite Datenpartitionen die gewünschte Partition aus.
Klicken Sie auf Die ausgewählten Momentaufnahmen jetzt generieren.
So führen Sie einen Cleanup einer Momentaufnahme für eine Partition aus
Wählen Sie in der Tabelle auf der Seite Datenpartitionen die gewünschte Partition aus.
Klicken Sie auf Cleanup der vorhandenen Momentaufnahmen ausführen.
[Top]
Verwendung 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:
Anweisungen zum Filtern einer Partition (mit 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 Momentaufnahmen für Mergeveröffentlichungen mit parametrisierten Filtern.
So zeigen Sie Informationen zu vorhandenen Partitionen an
- Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank 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
Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank 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:
@suser_sname - wenn der parametrisierte Filter durch den von SUSER_SNAME (Transact-SQL) zurückgegebenen Wert definiert wird.
@host_name - wenn der parametrisierte Filter durch den von HOST_NAME (Transact-SQL) zurückgegebenen Wert definiert wird.
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
Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank 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:
@suser_sname - wenn der parametrisierte Filter durch den von SUSER_SNAME (Transact-SQL) zurückgegebenen Wert definiert wird.
@host_name - wenn der parametrisierte Filter durch den von HOST_NAME (Transact-SQL) zurückgegebenen Wert definiert wird.
Dadurch werden zudem der Momentaufnahmeauftrag und alle Momentaufnahmedateien für die Partition entfernt.
[Top]
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
Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection-Klasse verwenden.
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.
Rufen Sie die LoadProperties-Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode false zurückgibt, sind die Veröffentlichungseigenschaften in Schritt 2 falsch definiert, oder die Veröffentlichung ist nicht vorhanden.
Rufen Sie die EnumMergePartitions-Methode auf, und übergeben Sie das Ergebnis an ein Array von MergePartition-Objekten.
Rufen Sie für jedes MergePartition-Objekt im Array alle gewünschten Eigenschaften ab.
So löschen Sie vorhandene Partitionen
Erstellen Sie eine Verbindung mit dem Verleger, indem Sie die ServerConnection-Klasse verwenden.
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.
Rufen Sie die LoadProperties-Methode auf, um die Eigenschaften des Objekts abzurufen. Wenn diese Methode false zurückgibt, sind die Veröffentlichungseigenschaften in Schritt 2 falsch definiert, oder die Veröffentlichung ist nicht vorhanden.
Rufen Sie die EnumMergePartitions-Methode auf, und übergeben Sie das Ergebnis an ein Array von MergePartition-Objekten.
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.
Rufen Sie die RemoveMergePartition-Methode für das MergePublication-Objekt aus Schritt 2 auf. Übergeben Sie das MergePartition-Objekt aus Schritt 5.
Wiederholen Sie Schritt 6 für jede zu löschende Partition.
[Top]
Siehe auch
Konzepte
Momentaufnahmen für Mergeveröffentlichungen mit parametrisierten Filtern