Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Sammanslagningsreplikering måste initiera både Utgivaren och Prenumeranten innan data kan flöda mellan dem. Den här artikeln innehåller information om de steg som inträffar under initieringen.
Initiera publikationen
Följande lista beskriver initieringsstegen för en publikation, som inträffar när du kör varje lagrad procedur som anges eller när du har slutfört guiden Ny publikation. Ytterligare initiering sker efter att Snapshot-agenten körs för första gången för en publikation.
sp_replicationdboptionPublikationsdatabasen är markerad för replikering. Det går inte att ta bort databasen om inte replikeringen tas bort.
Systemtabeller läggs till i publikationsdatabasen (om det inte redan finns en sammanslagningspublikation i databasen). En fullständig lista över systemtabeller finns i avsnittet "Systemtabeller som skapats i publikations- och prenumerationsdatabaserna" i den här artikeln.
sp_addmergepublication- Poster för publikationen läggs till i systemtabellerna.
sp_addpublication_snapshot- Ett Snapshot Agent-jobb läggs till i SQL Server Agent-systemet. Jobbnamnet är i formuläret
<Publisher>-<PublicationDatabase>-<Publication>-<Integer>.
- Ett Snapshot Agent-jobb läggs till i SQL Server Agent-systemet. Jobbnamnet är i formuläret
sp_addmergearticleVarje replikerat objekt har markerats för replikering. Det går inte att ta bort objektet om inte motsvarande artikel tas bort från alla publikationer.
Poster för varje artikel läggs till i systemtabellerna.
Resten av initieringen för publikationsdatabasen sker under den första körningen av Ögonblicksbildsagenten för en publikation. Publikationsdatabasen återinitieras inte under efterföljande körningar av ögonblicksbildsagenten. Om du använder guiden Ny publikation skapas den första ögonblicksbilden som standard när du har slutfört guiden. Om du använder lagrade procedurer måste du köra agentjobbet eller starta agenten direkt. Mer information om hur du kör agenter finns i Starta och stoppa en replikeringsagent (SQL Server Management Studio) och Körbara replikeringsagentbegrepp.
Första gången ögonblicksbildsagenten för en publikation körs:
En kolumn med namnet
rowguidläggs till i varje publicerad tabell, såvida inte tabellen redan har en kolumn av datatypen uniqueidentifier med egenskapsuppsättningenROWGUIDCOL(i vilket fall den här kolumnen används). Kolumnenrowguidanvänds för att unikt identifiera varje rad i varje publicerad tabell. Om tabellen tas bort från publikationenrowguidtas kolumnen bort. Om en befintlig kolumn användes för spårning tas inte kolumnen bort.Följande objekt skapas i publikationsdatabasen för varje publicerad tabell (alla objekt skapas i
dboschemat):Infogningsutlösare, uppdateringsutlösare och borttagningsutlösare läggs till i publicerade tabeller för att spåra ändringar. Utlösarna namnges i formuläret
MSmerge_ins_<GUID>,MSmerge_upd_<GUID>ochMSmerge_del_<GUID>. GUID-värdet härleds från posten för artikeln i systemtabellensysmergearticles.Lagrade procedurer skapas för att hantera infogningar, uppdateringar och borttagningar i publicerade tabeller och för att utföra flera andra replikeringsrelaterade åtgärder.
Vyer skapas för att hantera infogningar, uppdateringar, borttagningar och filtrering.
Konflikttabeller skapas för att lagra konfliktinformation. Konflikttabellerna matchar schemat för de publicerade tabellerna: varje publicerad tabell är skriptad och sedan används skriptet för att skapa konflikttabellen i publikationsdatabasen. Konflikttabeller namnges i formatet
dbo.MSmerge_conflict_<Publication>_<Article>.
Varje gång ögonblicksbildsagenten körs skapas följande typer av filer (med motsvarande filnamnstillägg) för varje artikel i publikationsdatabasen:
Schema (
.sch)Begränsningar och index (
.dri)Utlösare (
.trg)Systemtabelldata (
.sys)Konflikttabeller (
.cft)Data (
.bcp): skapas inte för publikationer med parametriserade filter.Om publikationen inte använder några parametriserade filter innehåller ögonblicksbilden data för de publicerade tabellerna i en uppsättning
.bcpfiler. Om publikationen använder parameteriserade filter (vilket är typiskt för sammanslagningspublikationer) innehåller den första ögonblicksbilden inga data. Data tillhandahålls med hjälp av en ögonblicksbild för en prenumerants partition, vilket beskrivs i nästa avsnitt.
Starta en prenumeration
Varje abonnemang initieras när sammanslagningsagenten för abonnemanget körs och kopierar den initiala ögonblicksbilden till abonnemangsdatabasen. Förutom schemat och data från replikerade objekt innehåller ögonblicksbilden de systemtabeller, vyer, utlösare och lagrade procedurer som finns i publikationsdatabasen. En eller två extra systemtabeller kopieras också till prenumerationsdatabasen. En fullständig lista över systemtabeller finns i avsnittet Systemtabeller som skapats i publikations- och prenumerationsdatabaserna i den här artikeln. Om en prenumeration initieras igen skrivs alla replikerade objekt och replikeringssystemobjekt över.
Om ingen av tabellerna i publikationsdatabasen använder parameteriserade filter kopieras samma ögonblicksbild av publikationen till varje prenumerant. Om ett eller flera parameteriserade filter används styrs sättet som varje prenumeration initieras på av följande logik:
Om platsen för ögonblicksbilden tillhandahålls till Mergeagenten via kommandoradet:
- Använd ögonblicksbilden från den här platsen.
Om däremot ögonblicksbilden var förgenererad:
- Hämta platsen för ögonblicksbilden från
MSmerge_dynamic_snapshotsi publikationsdatabasen och tillämpa ögonblicksbilden från den platsen.
- Hämta platsen för ögonblicksbilden från
Annars om publikationen tillåter prenumeranter att initiera ögonblicksbilder:
Om en ögonblicksbild redan har genererats för en annan prenumerant med samma partition tillämpar du ögonblicksbilden på Prenumeranten.
Om inte, generera och tillämpa en ögonblicksbild på Prenumeranten.
Initiera annars prenumeranten med hjälp av
SELECTinstruktioner mot tabellerna i publikationen. Den här metoden går långsammare än att använda en ögonblicksbild för prenumerantens partition.
Om överföringen av ögonblicksbilder avbryts vid något tillfälle återupptas den automatiskt och skickar inte om några filer som redan har överförts helt. Enheten för leverans av Snapshot Agent är bcp-filen för varje publikationens artikel, så filer som delvis levereras måste levereras i sin helhet. Att återuppta ögonblicksbilden kan dock avsevärt minska mängden data som överförs och säkerställa leverans av ögonblicksbilder i tid även om anslutningen är otillförlitlig. Mer information om hur du skapar ögonblicksbilder finns i Parameteriserade filter – Parameteriserade radfilter.
Plats för ögonblicksbild
Platsen för ögonblicksbilden är beroende av: sökvägen som angetts för standardplatsen eller den alternativa ögonblicksbilden; om publikationen använder en UNC-sökväg eller FTP-resurs för ögonblicksbildmappen. och om publikationen använder parametriserade filter. I de här exemplen antar du att platsen för ögonblicksbildmappen är: : \\<MyComputer>\<MyFolder>
Om publikationen använder UNC är den första delen av sökvägen:
\\<MyComputer>\<MyFolder>\unc\. Om den använder FTP, är det\\<MyComputer>\<MyFolder>\ftp\.Om publikationen använder UNC och inte använder parameteriserade filter är sökvägen
\\<MyComputer>\<MyFolder>\unc\<Publisher><Publicationdb><publication>Om publikationen använder UNC och använder parametriserade filter baseras platsen på sökvägen för ögonblicksbildmappen och de parametriserade radfiltreringsvillkoren för publikationen. Om artikeln till exempel filtreras med
HOST_NAME()funktionen och värdet för partitionen ärSalesLaptop, är\\<MyComputer>\<MyFolder>\unc\<Publisher><Publicationdb><publication>\SalesLaptop_12sökvägen till ögonblicksbilden för partitionen, där12är det ID som används internt för partitionen.
Systemtabeller som skapats i publikations- och prenumerationsdatabaserna
Följande tabeller skapas i publikationsdatabasen och varje prenumerationsdatabas.
| Tabell | Beskrivning |
|---|---|
| MSdynamicsnapshotjobs | Innehåller information om ögonblicksbildsjobb för publikationer med parametriserade filter. |
| MSdynamicsnapshotviews | Spårar alla tillfälliga ögonblicksbildsvyer som skapats av Ögonblicksbildsagenten. Det används av systemet för att rensa vyer i händelse av en onormal avstängning av SQL Server-agenten eller ögonblicksbildsagenten. |
| MSmerge_altsyncpartners | Spårar sambandet mellan de aktuella synkroniseringspartnerna och en Utgivare. |
| MSmerge_articlehistory | Spårar ändringar som gjorts i artiklar under en synkroniseringssession för sammanslagningsagenten, med en rad för varje artikel som ändringar har gjorts i. |
| MSmerge_conflicts_info | Spårar konflikter som uppstår när du synkroniserar en prenumeration till en sammanslagningspublikation. |
| MSmerge_contents | Innehåller en rad för varje rad som ändrats i den aktuella databasen sedan den publicerades. Den här tabellen används av sammanslagningsprocessen för att fastställa de rader som har ändrats. |
| MSmerge_current_partition_mappings | Innehåller en rad för varje partition som en viss ändrad rad tillhör. |
| MSmerge_dynamic_snapshots | Spårar ögonblicksbildens plats för varje partition definierad för en sammanslagningspublikation. |
| MSmerge_errorlineage | Innehåller rader som har tagits bort hos prenumeranten, men vars borttagning inte sprids till utgivaren. |
| MSmerge_generation_partition_mappings | Spårar om en viss generation innehåller ändringar som är relevanta för en viss partition. |
| MSmerge_genhistory | Innehåller en rad för varje generation. En generation är en samling ändringar som levereras till en utgivare eller prenumerant. Generationer stängs varje gång sammanslagningsagenten körs. efterföljande ändringar i en databas läggs till i en eller flera öppna generationer. |
| MSmerge_history | Innehåller historikrader med detaljerade beskrivningar av resultaten från tidigare jobbsessioner för sammanslagningsagenten. |
| MSmerge_identity_range | Spårar de numeriska intervall som tilldelats identitetskolumner för prenumerationer till publikationer där replikeringen automatiskt hanterar intervalltilldelningar. |
| MSmerge_metadataaction_request | Innehåller en rad för varje kompenserande åtgärd som krävs. En kompenserande åtgärd används för att återställa en ändring på en nod om ändringen misslyckades på en annan nod. |
| MSmerge_partition_groups | Innehåller en rad för varje förberäknad partition i en viss databas. |
| MSmerge_past_partition_mappings | Innehåller en rad för varje partition som en viss ändrad rad tidigare tillhörde, men inte längre tillhör. |
| MSmerge_replinfo | Innehåller en rad för varje prenumeration. Den här tabellen spårar intern information om skickade och mottagna generationer. |
| MSmerge_sessions | Innehåller historik-rader med resultaten av tidigare sammanslagningsagent-jobbsessioner. |
| MSmerge_settingshistory | Innehåller en historik över ändringar som gjorts i artikel- och publikationsegenskaper, med en rad för varje ändring som görs. |
| MSmerge_tombstone | Innehåller information om borttagna rader och tillåter att borttagningar sprids till andra prenumeranter. |
| MSrepl_errors | Innehåller detaljerad information om eventuella agentfel. |
| sysmergearticles | Innehåller en rad för varje sammanslagningsartikel. |
| sysmergepartitioninfo | Innehåller information om partitioner för varje artikel, med en rad för varje artikel. |
| sysmergepartitioninfoview | Innehåller partitioneringsinformation för tabellartiklar. |
| sysmergepublications | Innehåller en rad för varje sammanslagningspublikation. |
| sysmergeschemaarticles | Spårar endast schemaartiklar, till exempel lagrade procedurer. |
| sysmergeschemachange | Innehåller information om publicerade artiklar som genereras av Ögonblicksbildsagenten. |
| sysmergesubscriptions | Innehåller en rad för varje prenumerant. |
| sysmergesubsetfilters | Innehåller kopplingsfilterinformation för partitionerade artiklar. |
Dessutom skapas MSsnapshotdeliveryprogress-tabellen i varje prenumerationsdatabas och MSsubscription_properties-tabellen skapas i varje prenumerationsdatabas som använder en pullprenumeration.
| Tabell | Beskrivning |
|---|---|
| MSsnapshotdeliveryprogress | Spårar filer som framgångsrikt levererats till användaren när en ögonblicksbild appliceras. Dessa data används för att återuppta leveransen av filer om sammanslagningsagenten inte kan leverera alla filer under sessionen. |
| MSsubscription_properties | Innehåller den parameterinformation som krävs för att köra replikeringsagenter hos prenumeranten |