Snapshots für Mergeveröffentlichungen mit parametrisierten Filtern

Wenn parametrisierte Zeilenfilter in Mergeveröffentlichungen verwendet werden, initialisiert die Replikation jedes Abonnement mit einem zweiteiligen Snapshot. Zuerst wird ein Schemasnapshot erstellt, der alle von der Replikation benötigten Objekte und das Schema der veröffentlichten Objekte enthält, nicht jedoch die Daten. Jedes Abonnement wird dann mit einem Snapshot initialisiert, der die Objekte und das Schema aus dem Schemasnapshot sowie die Daten enthält, die zur Partition des Abonnements gehören. Wenn mehrere Abonnements eine bestimmte Partition erhalten (anders ausgedrückt, sie erhalten dasselbe Schema und dieselben Daten), wird der Snapshot für diese Partition nur einmal erstellt. Mehrere Abonnements werden mit demselben Snapshot initialisiert. Weitere Informationen zu parametrisierten Zeilenfiltern finden Sie unter Parametrisierte Zeilenfilter.

Es gibt drei Methoden zum Erstellen von Snapshots für Veröffentlichungen mit parametrisierten Filtern:

  • Vorabgenerieren von Snapshots für jede Partition. Bei dieser Methode können Sie steuern, wann Snapshots generiert werden.

    Sie haben auch die Möglichkeit, die Snapshots nach einem Zeitplan zu aktualisieren. Wenn neue Abonnenten eine Partition abonnieren, für die ein Snapshot erstellt wurde, erhalten sie einen aktuellen Snapshot.

  • Abonnenten das Anfordern der Snapshotgenerierung und -anwendung beim erstmaligen Synchronisieren ermöglichen. Bei dieser Methode können neue Abonnenten Synchronisierungen ohne Administratoreingriff ausführen (der SQL Server-Agent muss auf dem Verleger ausgeführt werden, damit der Snapshot generiert werden kann).

    HinweisHinweis

    Wenn das Filtern nach einem oder mehreren Artikeln in der Veröffentlichung nicht überlappende Partitionen ergibt, die für jedes Abonnement eindeutig sind, wird für Metadaten bei jedem Ausführen des Merge-Agents einen Cleanup ausgeführt. Das bedeutet, dass der partitionierte Snapshot schneller abläuft. Bei dieser Methode sollten Sie zulassen, dass Abonnenten das Generieren und Übermitteln von Snapshots einleiten. Weitere Informationen zu Filteroptionen finden Sie unter Parametrisierte Zeilenfilter.

  • Manuelles Generieren eines Snapshots für jeden Abonnenten mit dem Snapshot-Agent. Der Abonnent muss dann einen Snapshotspeicherort für den Merge-Agent bereitstellen, damit der richtige Snapshot abgerufen und angewendet werden kann.

    HinweisHinweis

    Diese Methode wird aus Gründen der Abwärtskompatibilität unterstützt, lässt jedoch keine FTP-Snapshotfreigaben zu.

Die flexibelste Vorgehensweise besteht in einer Kombination der Methoden der Vorabgenerierung und der vom Abonnenten angeforderten Snapshots: Snapshots werden vorab generiert und auf der Basis eines Terminplanes (normalerweise nicht während Spitzenzeiten) aktualisiert. Falls jedoch ein Abonnement erstellt wird, das eine neue Partition erfordert, kann ein Abonnent eigene Snapshots generieren.

Beispiel: Die Außendienstmitarbeiter von Adventure Works liefern Waren an einzelne Geschäfte aus. Jeder Vertriebsmitarbeiter erhält basierend auf seiner Anmeldung ein Abonnement, das die Daten für das vom jeweiligen Mitarbeiter bediente Geschäft abruft. Der Administrator generiert die Snapshots vorab und aktualisiert sie jeden Sonntag. Gelegentlich wird dem System ein neuer Benutzer hinzugefügt, der Daten für eine Partition benötigt, für die noch kein Snapshot verfügbar ist. Um zu verhindern, dass ein Abonnent die Veröffentlichung nicht abonnieren kann, weil noch kein Snapshot verfügbar ist, lässt der Administrator vom Abonnenten angeforderte Snapshots zu. Wenn der neue Abonnent erstmalig eine Verbindung herstellt, wird der Snapshot für die angegebene Partition generiert und auf dem Abonnenten angewendet (der SQL Server-Agent muss auf dem Verleger ausgeführt werden, damit der Snapshot generiert werden kann).

So erstellen Sie einen Snapshot für eine Veröffentlichung mit parametrisierten Filtern

Sicherheitseinstellungen für den Snapshot-Agent

Der Snapshot-Agent erstellt für jede Partition Snapshots. Der Agent wird für vorab generierte Snapshots und Snapshots ausgeführt, die vom Abonnenten angefordert werden. Er stellt Verbindungen mit den Anmeldeinformationen her, die beim Erstellen des Snapshot-Agentauftrags für die Veröffentlichung angegeben wurden (der Auftrag wird vom Assistenten für neue Veröffentlichung oder von sp_addpublication_snapshot erstellt.) Verwenden Sie sp_changedynamicsnapshot_job zum Ändern der Anmeldeinformationen. Weitere Informationen finden Sie unter sp_changedynamicsnapshot_job (Transact-SQL).