Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Samenvoegreplicatie moet zowel de Publisher als de Subscriber initialiseren voordat gegevens tussen hen kunnen worden uitgewisseld. Dit artikel bevat informatie over de stappen die optreden tijdens de initialisatie.
De publicatie initialiseren
De volgende lijst bevat informatie over de initialisatiestappen voor een publicatie, die plaatsvinden wanneer u elke opgeslagen procedure uitvoert die wordt vermeld of nadat u de wizard Nieuwe publicatie hebt voltooid. Verdere initialisatie vindt plaats nadat de momentopnameagent voor het eerst voor een publicatie wordt uitgevoerd.
sp_replicationdboptionDe publicatiedatabase is gemarkeerd voor replicatie. De database kan niet worden verwijderd, tenzij de replicatie wordt verwijderd.
Systeemtabellen worden toegevoegd aan de publicatiedatabase (tenzij er al een samenvoegpublicatie in de database bestaat). Zie de sectie Systeemtabellen die zijn gemaakt in de publicatie- en abonnementsdatabases in dit artikel voor een volledige lijst met systeemtabellen.
sp_addmergepublication- Invoergegevens voor de publicatie worden toegevoegd aan de systeemtabellen.
 
sp_addpublication_snapshot- Er wordt een momentopnameagenttaak toegevoegd aan het SQL Server Agent-systeem. De taaknaam bevindt zich in het formulier 
<Publisher>-<PublicationDatabase>-<Publication>-<Integer>. 
- Er wordt een momentopnameagenttaak toegevoegd aan het SQL Server Agent-systeem. De taaknaam bevindt zich in het formulier 
 sp_addmergearticleElk gerepliceerd object is gemarkeerd voor replicatie. Het object kan niet worden verwijderd, tenzij het bijbehorende artikel uit alle publicaties wordt verwijderd.
Vermeldingen voor elk artikel worden toegevoegd aan de systeemtabellen.
De rest van de initialisatie voor de publicatiedatabase vindt plaats tijdens de eerste uitvoering van de momentopnameagent voor een publicatie. De publicatiedatabase wordt niet opnieuw geïnitialiseerd tijdens volgende uitvoeringen van de momentopnameagent. Als u de wizard Nieuwe publicatie gebruikt, wordt de eerste momentopname standaard gemaakt nadat u de wizard hebt voltooid. Als u opgeslagen procedures gebruikt, moet u de agenttaak uitvoeren of de agent rechtstreeks starten. Voor meer informatie over het uitvoeren van agents, zie Starten en stoppen van een replicatieagent (SQL Server Management Studio) en Concepten van uitvoerbare bestanden voor replicatieagenten.
De eerste keer dat de Snapshot Agent voor een publicatie wordt uitgevoerd:
Er wordt een kolom met de naam
rowguidtoegevoegd aan elke gepubliceerde tabel, tenzij de tabel al een kolom van het gegevenstype uniqueidentifier heeft met deROWGUIDCOLeigenschappenset (in dat geval wordt deze kolom gebruikt). Derowguidkolom wordt gebruikt om elke rij in elke gepubliceerde tabel uniek te identificeren. Als de tabel uit de publicatie wordt verwijderd, wordt derowguidkolom verwijderd. Als er een bestaande kolom is gebruikt voor het bijhouden, wordt de kolom niet verwijderd.De volgende objecten worden gemaakt in de publicatiedatabase voor elke gepubliceerde tabel (alle objecten worden gemaakt in het
dboschema):Invoegtriggers, updatetriggers en verwijdertriggers worden toegevoegd aan gepubliceerde tabellen om wijzigingen bij te houden. De triggers hebben een naam in het formulier
MSmerge_ins_<GUID>,MSmerge_upd_<GUID>enMSmerge_del_<GUID>. De GUID-waarde wordt afgeleid van de vermelding voor het artikel in de systeemtabelsysmergearticles.Opgeslagen procedures worden gemaakt voor het afhandelen van invoegingen, updates en verwijderingen naar gepubliceerde tabellen en voor het uitvoeren van verschillende andere replicatiebewerkingen.
Weergaven worden gemaakt voor het beheren van invoegingen, updates, verwijderingen en filteren.
Conflicttabellen worden gemaakt om conflictinformatie op te slaan. De conflicttabellen komen overeen met het schema van de gepubliceerde tabellen: elke gepubliceerde tabel wordt gescript en vervolgens wordt het script gebruikt om de conflicttabel in de publicatiedatabase te maken. Conflicttabellen worden met de vorm
dbo.MSmerge_conflict_<Publication>_<Article>genoemd.
Telkens wanneer de momentopnameagent wordt uitgevoerd, worden de volgende typen bestanden (met de bijbehorende bestandsextensies) gemaakt voor elk artikel in de publicatiedatabase:
Schema (
.sch)Beperkingen en indexen (
.dri)Triggers (
.trg)Systeemtabelgegevens (
.sys)Conflicttabellen (
.cft)Gegevens (
.bcp): niet gemaakt voor publicaties met geparameteriseerde filters.Als de publicatie geen geparameteriseerde filters gebruikt, bevat de momentopname de gegevens voor de gepubliceerde tabellen in een set
.bcpbestanden. Als de publicatie geparameteriseerde filters gebruikt (wat gebruikelijk is voor samenvoegpublicaties), bevat de eerste momentopname geen gegevens. Gegevens worden verstrekt aan de hand van een momentopname voor een abonnementspartitie, die in de volgende sectie wordt besproken.
Een abonnement initialiseren
Elk abonnement wordt geïnitialiseerd wanneer de Merge Agent voor het abonnement draait en de initiële momentopname wordt gekopieerd naar de abonnementsdatabase. Naast het schema en de gegevens van gerepliceerde objecten bevat de momentopname de systeemtabellen, weergaven, triggers en opgeslagen procedures die aanwezig zijn in de publicatiedatabase. Een of twee extra systeemtabellen worden ook gekopieerd naar de abonnementsdatabase. Zie de sectie Systeemtabellen die zijn gemaakt in de publicatie- en abonnementsdatabases in dit artikel voor een volledige lijst met systeemtabellen. Als een abonnement opnieuw wordt geïnitialiseerd, worden alle gerepliceerde objecten en replicatiesysteemobjecten overschreven.
Als geen van de tabellen in de publicatiedatabase geparameteriseerde filters gebruikt, wordt dezelfde momentopname van de publicatie gekopieerd naar elke abonnee. Als een of meer geparameteriseerde filters worden gebruikt, wordt de manier waarop elk abonnement wordt geïnitialiseerd, bepaald door de volgende logica:
Als de locatie van de momentopname aan de Samenvoegingsagent wordt opgegeven op de opdrachtregel:
- Pas de momentopname van deze locatie toe.
 
Anders, als de momentopname vooraf is gegenereerd:
- Haal de locatie van de momentopname op uit 
MSmerge_dynamic_snapshotsde publicatiedatabase en pas de momentopname van die locatie toe. 
- Haal de locatie van de momentopname op uit 
 Als de publicatie abonnees toestaat om momentopnamen te maken:
Als er al een momentopname is gegenereerd voor een andere abonnee met dezelfde partitie, past u die momentopname toe op de abonnee.
Genereer anders een momentopname en pas deze toe op de Subscriber.
Initialiseer anders de Subscriber met behulp van
SELECTinstructies op de tabellen in de publicatie. Deze benadering is langzamer dan het gebruik van een momentopname voor de partitie van de abonnee.
Als de overdracht van de momentopname op een willekeurig moment wordt onderbroken, wordt deze automatisch hervat en worden geen bestanden opnieuw verzonden die al volledig zijn overgedragen. De leveringseenheid voor de momentopnameagent is het bcp-bestand voor elk publicatieartikel, zodat bestanden die gedeeltelijk worden geleverd, volledig opnieuw moeten worden bezorgd. Het hervatten van de momentopname kan echter de hoeveelheid verzonden gegevens aanzienlijk verminderen en ervoor zorgen dat momentopnamen tijdig worden geleverd, zelfs als de verbinding onbetrouwbaar is. Zie Geparameteriseerde filters - Geparameteriseerde rijfilters voor meer informatie over het maken van momentopnamen.
Locatie van momentopname
De locatie van de momentopname is afhankelijk van: het pad dat is opgegeven voor de standaard- of alternatieve momentopnamelocatie; of de publicatie gebruikmaakt van een UNC-pad of FTP-share voor de momentopnamemap; en of de publicatie gebruikmaakt van geparameteriseerde filters. In deze voorbeelden wordt ervan uitgegaan dat de locatie van de momentopnamemap: \\<MyComputer>\<MyFolder>
Als de publicatie GEBRUIKMAAKT van UNC, is het eerste deel van het pad:
\\<MyComputer>\<MyFolder>\unc\. Als er FTP wordt gebruikt, is het\\<MyComputer>\<MyFolder>\ftp\.Als de publicatie GEBRUIKMAAKT van UNC en geen geparameteriseerde filters gebruikt, is het pad
\\<MyComputer>\<MyFolder>\unc\<Publisher><Publicationdb><publication>Als de publicatie gebruikmaakt van UNC en geparameteriseerde filters, is de locatie gebaseerd op het pad van de momentopnamemap en de geparameteriseerde rijfiltercriteria voor de publicatie. Als het artikel bijvoorbeeld wordt gefilterd met behulp van de
HOST_NAME()functie en de waarde vanHOST_NAME()voor de partitie isSalesLaptop, is het pad naar de momentopname voor die partitie\\<MyComputer>\<MyFolder>\unc\<Publisher><Publicationdb><publication>\SalesLaptop_12, waar12is de id die intern voor de partitie wordt gebruikt.
Systeemtabellen die zijn gemaakt in de publicatie- en abonnementsdatabases
De volgende tabellen worden gemaakt in de publicatiedatabase en elke abonnementsdatabase.
| Tabel | Beschrijving | 
|---|---|
| MSdynamicsnapshotjobs | Bevat informatie over momentopnametaken voor publicaties met geparameteriseerde filters. | 
| MSdynamicsnapshotviews | Houdt alle tijdelijke momentopnameweergaven bij die zijn gemaakt door de momentopnameagent. Het wordt door het systeem gebruikt voor het opschonen van views in het geval van een onverwachte afsluiting van SQL Server Agent of de Snapshot Agent. | 
| MSmerge_altsyncpartners | Houdt de koppeling bij van wie de huidige synchronisatiepartners zijn voor een uitgever. | 
| MSmerge_articlehistory | Hiermee worden wijzigingen bijgehouden die zijn aangebracht in artikelen tijdens een synchronisatiesessie van de samenvoegagent, met één rij voor elk artikel waarin wijzigingen zijn aangebracht. | 
| MSmerge_conflicts_info | Houdt conflicten bij die optreden bij het synchroniseren van een abonnement naar een samenvoegpublicatie. | 
| MSmerge_contents | Bevat één rij voor elke rij die is gewijzigd in de huidige database sinds deze is gepubliceerd. Deze tabel wordt gebruikt door het samenvoegproces om de rijen te bepalen die zijn gewijzigd. | 
| MSmerge_current_partition_mappings | Bevat één rij voor elke partitie waartoe een bepaalde gewijzigde rij behoort. | 
| MSmerge_dynamic_snapshots | Houdt de locatie van de momentopname bij voor elke partitie die is gedefinieerd voor een samenvoegpublicatie. | 
| MSmerge_errorlineage | Bevat rijen die zijn verwijderd bij de abonnee, maar waarvan de verwijdering niet is doorgegeven aan de Uitgever. | 
| MSmerge_generation_partition_mappings | Hiermee wordt bijgehouden of een bepaalde generatie wijzigingen bevat die relevant zijn voor een bepaalde partitie. | 
| MSmerge_genhistory | Bevat één rij voor elke generatie. Een generatie is een verzameling wijzigingen die aan een uitgever of abonnee worden geleverd. Generaties worden gesloten telkens wanneer de samenvoegagent wordt uitgevoerd; latere wijzigingen in een database worden toegevoegd aan een of meer open generaties. | 
| MSmerge_history | Bevat geschiedenisrijen met gedetailleerde beschrijvingen van de resultaten van eerdere samenvoegagent-taaksessies. | 
| MSmerge_identity_range | Houdt de numerieke bereiken bij die zijn toegewezen aan identiteitskolommen voor abonnementen op publicaties waarvoor replicatie automatisch bereiktoewijzingen beheert. | 
| MSmerge_metadataaction_request | Bevat één rij voor elke compenserende actie die vereist is. Een compenserende actie wordt gebruikt om een wijziging terug te draaien op het ene knooppunt als de wijziging is mislukt op een ander knooppunt. | 
| MSmerge_partition_groups | Bevat één rij voor elke vooraf samengestelde partitie in een bepaalde database. | 
| MSmerge_past_partition_mappings | Bevat één rij voor elke partitie waartoe een bepaalde gewijzigde rij behoort, maar waartoe deze niet meer behoort. | 
| MSmerge_replinfo | Bevat één rij voor elk abonnement. In deze tabel worden interne gegevens over verzonden en ontvangen generaties bijgehouden. | 
| MSmerge_sessions | Bevat geschiedenisrijen met de resultaten van eerdere samenvoegingsagenttaaksessies. | 
| MSmerge_settingshistory | Bevat een geschiedenis van wijzigingen in artikel- en publicatie-eigenschappen, met één rij voor elke aangebrachte wijziging. | 
| MSmerge_tombstone | Bevat informatie over verwijderde rijen en staat toe dat verwijderingen worden doorgegeven aan andere abonnees. | 
| MSrepl_errors | Bevat gedetailleerde informatie over agentfouten. | 
| sysmergearticles | Bevat één rij voor elk samenvoegartikel. | 
| sysmergepartitioninfo | Bevat informatie over partities voor elk artikel, met één rij voor elk artikel. | 
| sysmergepartitioninfoview | Bevat partitioneringsinformatie voor tabelartikelen. | 
| sysmergepublications | Bevat één rij voor elke samenvoegpublicatie. | 
| sysmergeschemaarticles | Houdt alleen artikelen met schema's bij, zoals opgeslagen procedures. | 
| sysmergeschemachange | Bevat informatie over de gepubliceerde artikelen die zijn gegenereerd door de Momentopnameagent. | 
| sysmergesubscriptions | Bevat één rij voor elke abonnee. | 
| sysmergesubsetfilters | Bevat joinfilterinformatie voor gepartitioneerde artikelen. | 
Bovendien wordt de MSsnapshotdeliveryprogress tabel gemaakt in elke abonnementsdatabase en wordt de MSsubscription_properties tabel gemaakt in elke abonnementsdatabase die gebruikmaakt van een pull-abonnement:
| Tabel | Beschrijving | 
|---|---|
| VoortgangMSsnapshotlevering | Hiermee worden bestanden bijgehouden die aan de abonnee zijn geleverd wanneer een momentopname wordt toegepast. Deze gegevens worden gebruikt om de levering van bestanden te hervatten als de samenvoegagent niet alle bestanden tijdens de sessie kan leveren. | 
| MSsubscription_properties | Bevat de parametergegevens die nodig zijn voor het uitvoeren van replicatieagents bij de abonnee |