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.
Die Mergereplikation muss sowohl den Publisher als auch den Abonnenten initialisieren, bevor Daten zwischen ihnen ausgetauscht werden können. Dieser Artikel enthält Informationen zu den Schritten, die während der Initialisierung auftreten.
Publikation initialisieren
In der folgenden Liste werden die Initialisierungsschritte für eine Publikation beschrieben, die relevant sind, wenn Sie jede der aufgeführten gespeicherten Prozeduren ausführen, oder nachdem Sie den Assistenten für neue Veröffentlichungen ausgeführt haben. Weitere Initialisierung erfolgt, nachdem der Snapshot-Agent erstmalig für eine Veröffentlichung ausgeführt wird.
sp_replicationdboptionDie Publikationsdatenbank ist für die Replikation markiert. Die Datenbank kann nicht gelöscht werden, es sei denn, die Replikation wird entfernt.
Systemtabellen werden der Publikationsdatenbank hinzugefügt (es sei denn, eine Zusammenführungsveröffentlichung ist bereits in der Datenbank vorhanden). Eine vollständige Liste der Systemtabellen finden Sie im Abschnitt "Systemtabellen erstellt in den Publikations- und Abonnementdatenbanken" in diesem Artikel.
sp_addmergepublication- Einträge für die Publikation werden den Systemtabellen hinzugefügt.
sp_addpublication_snapshot- Dem SQL Server-Agent-System wird ein Snapshot-Agent-Auftrag hinzugefügt. Der Auftragsname befindet sich im Formular
<Publisher>-<PublicationDatabase>-<Publication>-<Integer>.
- Dem SQL Server-Agent-System wird ein Snapshot-Agent-Auftrag hinzugefügt. Der Auftragsname befindet sich im Formular
sp_addmergearticleJedes replizierte Objekt wird für die Replikation markiert. Das Objekt kann nicht gelöscht werden, es sei denn, der entsprechende Artikel wird aus allen Publikationen gelöscht.
Einträge für jeden Artikel werden den Systemtabellen hinzugefügt.
Der Rest der Initialisierung für die Publikationsdatenbank erfolgt während der ersten Ausführung des Snapshot-Agents für eine Publikation. Die Publikationsdatenbank wird während der nachfolgenden Ausführung des Snapshot-Agents nicht erneut initialisiert. Wenn Sie den Assistenten für neue Veröffentlichungen verwenden, wird die anfängliche Momentaufnahme standardmäßig erstellt, nachdem Sie den Assistenten abgeschlossen haben. Wenn Sie gespeicherte Prozeduren verwenden, müssen Sie den Agent-Auftrag ausführen oder den Agenten direkt starten. Weitere Informationen zum Ausführen von Agents finden Sie unter Starten und Beenden eines Replikations-Agents (SQL Server Management Studio) und der Ausführbaren Konzepte des Replikations-Agents.
Die erste Ausführung des Snapshot-Agenten für eine Veröffentlichung:
Jeder veröffentlichten Tabelle wird eine Spalte
rowguidhinzugefügt, es sei denn, die Tabelle verfügt bereits über eine Spalte vom Datentyp uniqueidentifier mit demROWGUIDCOLEigenschaftensatz (in diesem Fall wird diese Spalte verwendet). DierowguidSpalte wird verwendet, um jede Zeile in jeder veröffentlichten Tabelle eindeutig zu identifizieren. Wenn die Tabelle aus der Publikation gelöscht wird, wird dierowguidSpalte entfernt. Wenn eine vorhandene Spalte für die Nachverfolgung verwendet wurde, wird die Spalte nicht entfernt.Die folgenden Objekte werden in der Publikationsdatenbank für jede veröffentlichte Tabelle erstellt (alle Objekte werden im
dboSchema erstellt):Auslöser, Aktualisierungstrigger und Löschtrigger werden veröffentlichten Tabellen hinzugefügt, um Änderungen nachzuverfolgen. Die Trigger werden in der Form
MSmerge_ins_<GUID>,MSmerge_upd_<GUID>, undMSmerge_del_<GUID>benannt. Der GUID-Wert wird vom Eintrag für den Artikel in der Systemtabellesysmergearticlesabgeleitet.Gespeicherte Prozeduren werden erstellt, um Einfügungen, Aktualisierungen und Löschvorgänge für veröffentlichte Tabellen zu verarbeiten und mehrere andere replikationsbezogene Vorgänge auszuführen.
Ansichten werden erstellt, um Einfügungen, Aktualisierungen, Löschvorgänge und Filterung zu verwalten.
Konflikttabellen werden erstellt, um Konfliktinformationen zu speichern. Die Konflikttabellen stimmen mit dem Schema der veröffentlichten Tabellen überein: Jede veröffentlichte Tabelle ist skriptiert, und anschließend wird das Skript verwendet, um die Konflikttabelle in der Publikationsdatenbank zu erstellen. Konflikttabellen werden im Format
dbo.MSmerge_conflict_<Publication>_<Article>benannt.
Jedes Mal, wenn der Snapshot-Agent ausgeführt wird, werden die folgenden Dateitypen (mit ihren entsprechenden Dateierweiterungen) für jeden Artikel in der Publikationsdatenbank erstellt:
Schema (
.sch)Einschränkungen und Indizes (
.dri)Auslöser (
.trg)Systemtabellendaten (
.sys)Konflikttabellen (
.cft)Daten (
.bcp): nicht für Publikationen mit parametrisierten Filtern erstellt.Wenn die Publikation keine parametrisierten Filter verwendet, enthält die Momentaufnahme die Daten für die veröffentlichten Tabellen in einer Reihe von
.bcpDateien. Wenn die Publikation parametrisierte Filter verwendet (die für Zusammenführungspublikationen typisch sind), enthält die anfängliche Momentaufnahme keine Daten. Daten werden mithilfe einer Momentaufnahme für die Partition eines Abonnenten bereitgestellt, die im nächsten Abschnitt erläutert wird.
Initialisieren eines Abonnements
Jedes Abonnement wird initialisiert, wenn der Merge-Agent für das Abonnement ausgeführt wird und den anfänglichen Snapshot in die Abonnementdatenbank kopiert. Neben dem Schema und den Daten aus replizierten Objekten enthält die Momentaufnahme die Systemtabellen, Ansichten, Trigger und gespeicherten Prozeduren, die in der Publikationsdatenbank vorhanden sind. Eine oder zwei zusätzliche Systemtabellen werden ebenfalls in die Abonnementdatenbank kopiert. Eine vollständige Liste der Systemtabellen finden Sie in den Abschnitten "Systemtabellen", die in den Publikations- und Abonnementdatenbanken in diesem Artikel erstellt wurden. Wenn ein Abonnement erneut initialisiert wird, werden alle replizierten Objekte und Replikationssystemobjekte überschrieben.
Wenn keine der Tabellen in der Publikationsdatenbank parametrisierte Filter verwenden, wird dieselbe Publikationsmomentaufnahme an jeden Abonnenten kopiert. Wenn mindestens ein parametrisierter Filter verwendet wird, unterliegt die Art und Weise, in der jedes Abonnement initialisiert wird, der folgenden Logik:
Wenn der Speicherort der Momentaufnahme für den Merge-Agenten in der Befehlszeile angegeben wird:
- Wenden Sie die Momentaufnahme aus diesem Speicherort an.
Sonst wenn die Momentaufnahme vorgeneriert wurde:
- Rufen Sie den Speicherort der Momentaufnahme aus
MSmerge_dynamic_snapshotsder Publikationsdatenbank ab, und wenden Sie die Momentaufnahme von diesem Speicherort an.
- Rufen Sie den Speicherort der Momentaufnahme aus
Andernfalls, wenn die Publikation Abonnenten das Initiieren von Momentaufnahmen ermöglicht:
Wenn für einen anderen Abonnenten bereits eine Momentaufnahme mit derselben Partition generiert wurde, wenden Sie diese Momentaufnahme auf den Abonnenten an.
Andernfalls generieren Sie eine Momentaufnahme und wenden sie auf den Abonnenten an.
Andernfalls initialisieren Sie den Abonnenten mit
SELECT-Anweisungen für die Tabellen in der Veröffentlichung. Dieser Ansatz ist langsamer als die Verwendung einer Momentaufnahme für die Partition des Abonnenten.
Wenn die Momentaufnahmeübertragung zu einem beliebigen Zeitpunkt unterbrochen wird, wird sie automatisch fortgesetzt und sendet keine Dateien erneut, die bereits vollständig übertragen wurden. Die Übermittlungseinheit für den Snapshot-Agent ist die bcp-Datei für jeden Publikationsartikel, sodass Dateien, die teilweise übermittelt werden, vollständig neu zugestellt werden müssen. Das Fortsetzen der Momentaufnahme kann jedoch die übertragene Datenmenge erheblich reduzieren und eine zeitnahe Momentaufnahmeübermittlung sicherstellen, auch wenn die Verbindung nicht zuverlässig ist. Weitere Informationen zum Erstellen von Momentaufnahmen finden Sie unter Parameterisierte Filter – Parametrisierte Zeilenfilter.
Snapshot-Standort
Die Momentaufnahmeposition hängt von: dem Pfad, der für den Standard- oder alternativen Snapshotspeicherort angegeben ist; ob die Publikation einen UNC-Pfad oder eine FTP-Freigabe für den Snapshotordner verwendet; und ob die Publikation parametrisierte Filter verwendet. Gehen Sie in den folgenden Beispielen davon aus, dass der Speicherort des Momentaufnahmeordners lautet: \\<MyComputer>\<MyFolder>
Wenn die Publikation UNC verwendet, lautet der erste Teil des Pfads:
\\<MyComputer>\<MyFolder>\unc\. Wenn es FTP verwendet, ist es\\<MyComputer>\<MyFolder>\ftp\.Wenn die Publikation UNC verwendet und keine parametrisierten Filter verwendet, lautet der Pfad
\\<MyComputer>\<MyFolder>\unc\<Publisher><Publicationdb><publication>Wenn die Publikation UNC verwendet und parametrisierte Filter verwendet, basiert der Speicherort auf dem Pfad des Snapshotordners und den parametrisierten Zeilenfilterkriterien für die Publikation. Wenn z. B. der Artikel mithilfe der
HOST_NAME()Funktion gefiltert wird und der Wert fürHOST_NAME()für die PartitionSalesLaptopist, lautet der Pfad zur Momentaufnahme für diese Partition\\<MyComputer>\<MyFolder>\unc\<Publisher><Publicationdb><publication>\SalesLaptop_12, wobei12die intern für die Partition verwendete ID ist.
In den Publikations- und Abonnementdatenbanken erstellte Systemtabellen
Die folgenden Tabellen werden in der Publikationsdatenbank und jeder Abonnementdatenbank erstellt.
| Tabelle | BESCHREIBUNG |
|---|---|
| MSdynamicsnapshotjobs | Enthält Informationen zu Momentaufnahme-Aufträgen für Publikationen mit parameter-gesteuerten Filtern. |
| MSdynamicsnapshotviews | Verfolgt alle vom Snapshot-Agent erstellten temporären Momentaufnahmeansichten nach. Dies wird vom System zum Bereinigen von Ansichten verwendet, wenn ein ungewöhnliches Herunterfahren des SQL Server-Agenten oder des Snapshot-Agenten erfolgt. |
| MSmerge_altsyncpartners | Verfolgt die Zuordnung der aktuellen Synchronisierungspartner für einen Publisher. |
| MSmerge_articlehistory | Verfolgt Änderungen, die während einer Zusammenführungs-Agent-Synchronisierungssitzung an Artikeln vorgenommen wurden, mit einer Zeile für jeden Artikel nach, an dem Änderungen vorgenommen wurden. |
| MSmerge_conflicts_info | Verfolgt Konflikte, die beim Synchronisieren eines Abonnements mit einer Merge-Veröffentlichung auftreten. |
| MSmerge_contents | Enthält eine Zeile für jede Zeile, die seit der Veröffentlichung in der aktuellen Datenbank geändert wurde. Diese Tabelle wird vom Zusammenführungsprozess verwendet, um die geänderten Zeilen zu bestimmen. |
| MSmerge_current_partition_mappings | Enthält eine Zeile für jede Partition, zu der eine bestimmte geänderte Zeile gehört. |
| MSmerge_dynamic_snapshots | Verfolgt den Speicherort des Schnappschusses für jede Partition, die für eine Merge-Publikation definiert ist. |
| MSmerge_errorlineage | Enthält Zeilen, die beim Abonnenten gelöscht wurden, deren Löschvorgang jedoch nicht an den Herausgeber weitergegeben wird. |
| MSmerge_generation_partition_mappings | Erfasst, ob eine bestimmte Generation änderungen enthält, die für eine bestimmte Partition relevant sind. |
| MSmerge_genhistory | Enthält eine Zeile für jede Generation. Eine Generation ist eine Sammlung von Änderungen, die an einen Herausgeber oder Abonnenten übermittelt werden. Generationen werden jedes Mal geschlossen , wenn der Merge-Agent ausgeführt wird; Nachfolgende Änderungen in einer Datenbank werden einer oder mehreren offenen Generationen hinzugefügt. |
| MSmerge_history | Enthält Verlaufszeilen mit detaillierten Beschreibungen der Ergebnisse früherer Sitzungen von Merge-Agent-Einzelvorgängen. |
| MSmerge_identity_range | Verfolgt die numerischen Bereiche, die Identitätsspalten für Abonnements von Publikationen zugewiesen werden, für die die Replikation automatisch die Bereichszuweisungen verwaltet. |
| MSmerge_metadataaction_request | Enthält eine Zeile für jede ausgleichende Aktion, die erforderlich ist. Eine Ausgleichsaktion wird verwendet, um eine Änderung bei einem Knoten rückgängig zu machen, wenn die Änderung bei einem anderen Knoten fehlgeschlagen ist. |
| MSmerge_partition_groups | Enthält eine Zeile für jede vorkompilierte Partition in einer bestimmten Datenbank. |
| MSmerge_past_partition_mappings | Enthält eine Zeile für jede Partition, zu der eine bestimmte geänderte Zeile ehemals gehörte, aber nicht mehr gehört. |
| MSmerge_replinfo | Enthält eine Zeile für jedes Abonnement. Diese Tabelle verfolgt interne Informationen zu gesendeten und empfangenen Generationen. |
| MSmerge_sessions | Enthält Verlaufszeilen mit den Ergebnissen früherer Merge-Agent-Einzelvorgangssitzungen. |
| MSmerge_settingshistory | Enthält einen Verlauf der Änderungen, die an Artikel- und Publikationseigenschaften vorgenommen wurden, mit einer Zeile für jede vorgenommene Änderung. |
| MSmerge_tombstone | Enthält Informationen zu gelöschten Zeilen und ermöglicht die Weitergabe von Löschungen an andere Abonnenten. |
| MSrepl_errors | Enthält detaillierte Informationen zu allen Agentfehlern. |
| sysmergearticles | Enthält eine Zeile für jeden zusammengeführten Artikel. |
| sysmergepartitioninfo | Enthält Informationen zu Partitionen für jeden Artikel mit einer Zeile für jeden Artikel. |
| sysmergepartitioninfoview | Enthält Partitionierungsinformationen für Tabellenobjekte. |
| sysmergepublications | Enthält eine Zeile für jede Zusammenführungsveröffentlichung. |
| sysmergeschemaarticles | Verfolgt nur Schemaartikel, z. B. gespeicherte Prozeduren. |
| sysmergeschemachange | Enthält Informationen zu den veröffentlichten Artikeln, die vom Snapshot-Agent generiert werden. |
| sysmergesubscriptions | Enthält eine Zeile für jeden Abonnenten. |
| sysmergesubsetfilters | Enthält Verknüpfungsfilterinformationen für partitionierte Artikel. |
Darüber hinaus wird die MSsnapshotdeliveryprogress Tabelle in jeder Abonnementdatenbank erstellt, und die MSsubscription_properties Tabelle wird in jeder Abonnementdatenbank erstellt, die ein Pullabonnement verwendet:
| Tabelle | BESCHREIBUNG |
|---|---|
| MS-Schnappschusslieferfortschritt | Verfolgt Dateien, die erfolgreich unter Verwendung einer Momentaufnahme an den Abonnenten übermittelt wurden. Diese Daten werden verwendet, um die Übermittlung von Dateien fortzusetzen, falls der Zusammenführungs-Agent während der Sitzung nicht alle Dateien übermittelt. |
| MSsubscription_properties | Enthält die Parameterinformationen, die zum Ausführen von Replikationsagenten beim Abonnenten erforderlich sind. |