Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Slučovací replikace musí inicializovat vydavatele i odběratele, aby mezi nimi mohly přetékat data. Tento článek obsahuje informace o krocích, ke kterým dochází během inicializace.
Inicializujte publikaci
Následující seznam podrobně popisuje kroky inicializace publikace, ke kterým dochází při provádění každé uložené procedury uvedené nebo po dokončení Průvodce novou publikací. Další inicializace je provedena po prvním spuštění agenta snímků pro publikaci.
sp_replicationdboptionDatabáze publikace je označena pro replikaci. Databázi nejde odstranit, pokud se neodebere replikace.
Systémové tabulky se přidají do databáze publikace (pokud již v databázi neexistuje sloučená publikace). Úplný seznam systémových tabulek najdete v části Systémové tabulky vytvořené v databázích publikace a odběrů v tomto článku.
sp_addmergepublication- Položky publikace jsou přidávány do systémových tabulek.
sp_addpublication_snapshot- Do systému agenta SQL Serveru se přidá úloha Snapshot Agenta. Název úlohy je ve formuláři
<Publisher>-<PublicationDatabase>-<Publication>-<Integer>.
- Do systému agenta SQL Serveru se přidá úloha Snapshot Agenta. Název úlohy je ve formuláři
sp_addmergearticleKaždý replikovaný objekt je označen pro replikaci. Objekt nelze odstranit, pokud se odpovídající článek neodstraní ze všech publikací.
Položky pro každý článek se přidají do systémových tabulek.
Zbývající část inicializace pro databázi publikace probíhá během počátečního spuštění Agentu Snímků pro publikaci. Databáze publikace se během následných spuštění agenta snímků znovu neinicializuje. Pokud použijete Průvodce vytvořením nové publikace, po dokončení průvodce se ve výchozím nastavení vytvoří počáteční snímek. Pokud používáte uložené procedury, musíte spustit úlohu agenta nebo spustit přímo agenta. Další informace o spouštění agentů naleznete v tématu Spuštění a zastavení agenta replikace (SQL Server Management Studio) a koncepty spustitelných souborů agenta replikace.
Při prvním spuštění snímkového agenta pro publikaci:
Sloupec pojmenovaný
rowguidse přidá do každé publikované tabulky, pokud tabulka již neobsahuje sloupec datového typu uniqueidentifier se sadou vlastnostíROWGUIDCOL(v takovém případě se tento sloupec používá). Sloupecrowguidslouží k jedinečné identifikaci každého řádku v každé publikované tabulce. Pokud je tabulka vyřazena z publikace,rowguidsloupec se odebere. Pokud byl ke sledování použit existující sloupec, sloupec se neodebere.Následující objekty jsou vytvořeny v databázi publikace pro každou publikovanou tabulku (všechny objekty jsou vytvořeny ve schématu
dbo):Do publikovaných tabulek se přidají spouště pro vložení, aktualizaci a odstranění, aby bylo možné sledovat změny. Aktivační události jsou pojmenovány ve formuláři
MSmerge_ins_<GUID>,MSmerge_upd_<GUID>aMSmerge_del_<GUID>. Hodnota GUID je odvozena od položky pro článek v systémové tabulcesysmergearticles.Uložené procedury se vytvářejí pro zpracování vložení, aktualizací a odstranění publikovaných tabulek a provádění několika dalších operací souvisejících s replikací.
Zobrazení se vytvářejí pro správu vkládání, aktualizací, odstraňování a filtrování.
Konfliktní tabulky se vytvoří pro ukládání informací o konfliktech. Konfliktní tabulky odpovídají schématu publikovaných tabulek: každá publikovaná tabulka se skriptuje a pak se skript použije k vytvoření konfliktní tabulky v databázi publikace. Konfliktní tabulky jsou pojmenovány ve formuláři
dbo.MSmerge_conflict_<Publication>_<Article>.
Při každém spuštění agenta snímků se pro každý článek v databázi publikace vytvoří následující typy souborů (s odpovídajícími příponami souborů):
Schéma (
.sch)Omezení a indexy (
.dri)Spouštěče (
.trg)Data systémových tabulek (
.sys)Konfliktní tabulky (
.cft)Data (
.bcp): nejsou vytvořena pro publikace s parametrizovanými filtry.Pokud publikace nepoužívá žádné parametrizované filtry, snímek obsahuje data publikovaných
.bcptabulek v sadě souborů. Pokud publikace používá parametrizované filtry (což je typické pro slučovací publikace), počáteční snímek neobsahuje žádná data. Data se poskytují pomocí snímku pro oddíl odběratele, který je popsán v další části.
Inicializace předplatného
Každé předplatné se inicializuje, když se spustí agent sloučení předplatného a zkopíruje počáteční snímek do databáze předplatného. Kromě schématu a dat z replikovaných objektů snímek obsahuje systémové tabulky, zobrazení, triggery a uložené procedury, které existují v databázi publikace. Do databáze předplatného se zkopírují také jedna nebo dvě další systémové tabulky. Úplný seznam systémových tabulek najdete v části Systémové tabulky vytvořené v databázích publikace a odběrů v tomto článku. Pokud se předplatné znovu inicializuje, přepíšou se všechny replikované objekty a systémové objekty replikace.
Pokud žádná z tabulek v databázi publikace nepoužívá parametrizované filtry, zkopíruje se do každého odběratele stejný snímek publikace. Pokud se použije jeden nebo více parametrizovaných filtrů, řídí se způsob inicializace každého předplatného následující logikou:
Pokud je umístění snímku k dispozici agentu sloučení na příkazovém řádku:
- Použijte snímek z tohoto umístění.
Jinak, pokud byl snímek předgenerovaný:
- Načtěte umístění snímku z
MSmerge_dynamic_snapshotsdatabáze publikace a použijte snímek z tohoto umístění.
- Načtěte umístění snímku z
Jinak pokud publikace umožňuje odběratelům vytvářet snímky:
Pokud už byl snímek vygenerován pro jiného odběratele se stejným oddílem, použijte ho u odběratele.
Jinak vygenerujte a použijte snímek pro odběratele.
Jinak inicializujte Subscriber pomocí příkazů
SELECTvůči tabulkám v publikaci. Tento přístup je pomalejší než použití snímku pro oddíl odběratele.
Pokud se přenos snímku v libovolném okamžiku přeruší, automaticky se obnoví a neodejde znovu odeslat žádné soubory, které už byly zcela přeneseny. Jednotka doručení pro agenta snímků je soubor bcp pro každý článek publikace, takže soubory, které jsou částečně doručeny, musí být zcela znovu doručeny. Obnovení snímku ale může výrazně snížit objem přenášených dat a zajistit včasné doručování snímků i v případě, že připojení není spolehlivé. Další informace o vytváření snímků naleznete v tématu Parametrizované filtry – parametrizované filtry řádků.
Umístění snímku
Umístění snímku závisí na cestě určené pro výchozí nebo alternativní umístění snímku; zda publikace používá pro složku snímku cestu UNC nebo sdílenou složku FTP; a zda publikace používá parametrizované filtry. V těchto příkladech předpokládejme, že umístění složky snímku je: \\<MyComputer>\<MyFolder>
Pokud publikace používá UNC, první část cesty je:
\\<MyComputer>\<MyFolder>\unc\. Pokud používá FTP,\\<MyComputer>\<MyFolder>\ftp\je.Pokud publikace používá UNC a nepoužívá parametrizované filtry, cesta je
\\<MyComputer>\<MyFolder>\unc\<Publisher><Publicationdb><publication>Pokud publikace používá UNC a používá parametrizované filtry, umístění je založeno na cestě ke složce snímku a parametrizovaných kritérií filtrování řádků pro publikaci. Pokud je například článek filtrován pomocí
HOST_NAME()funkce a hodnotaHOST_NAME()oddílu jeSalesLaptop, cesta k snímku pro tento oddíl je\\<MyComputer>\<MyFolder>\unc\<Publisher><Publicationdb><publication>\SalesLaptop_12, kde12je ID používané interně pro oddíl.
Systémové tabulky vytvořené v databázích publikace a odběratelských databázích
V databázi publikace a každé databázi odběru se vytvoří následující tabulky.
| Tabulka | Popis |
|---|---|
| MSdynamicsnapshotjobs | Obsahuje informace o úlohách snímků pro publikace s parametrizovanými filtry. |
| MSdynamicsnapshotviews | Sleduje všechna dočasná zobrazení snímků vytvořená agentem snímků. Systém ho používá k čištění zobrazení v případě neobvyklého vypnutí agenta SQL Serveru nebo agenta snímku. |
| MSmerge_altsyncpartners | Sleduje přiřazení aktuálních synchronizačních partnerů pro Publisher. |
| MSmerge_articlehistory | Sleduje změny provedené v článcích během synchronizace agenta sloučení, přičemž pro každý článek, ve kterém došlo ke změnám, je vytvořen jeden řádek. |
| MSmerge_conflicts_info | Sleduje konflikty, ke kterým dochází při synchronizaci odběru na slučovací publikaci. |
| MSmerge_contents | Obsahuje jeden řádek pro každý řádek upravený v aktuální databázi od jeho publikování. Tato tabulka je používána procesem sloučení k určení řádků, které se změnily. |
| MSmerge_current_partition_mappings | Obsahuje jeden řádek pro každou partici, do které daný změněný řádek patří. |
| MSmerge_dynamic_snapshots | Sleduje umístění snímku pro každý oddíl definovaný pro sloučenou publikaci. |
| MSmerge_errorlineage | Obsahuje řádky, které byly odstraněny u odběratele, ale jejichž odstranění není přenášeno k vydavateli. |
| MSmerge_generation_partition_mappings | Sleduje, jestli dané generování obsahuje jakékoli změny relevantní pro daný oddíl. |
| MSmerge_genhistory | Obsahuje jeden řádek pro každou generaci. Generace je soubor změn, které se odesílají vydavateli nebo odběrateli. Generace jsou uzavřeny při každém spuštění agenta sloučení; následné změny v databázi se přidají do jedné nebo více otevřených generací. |
| MSmerge_history | Obsahuje řádky historie s podrobnými popisy výsledků předchozích relací Merge Agent úloh. |
| MSmerge_identity_range | Sleduje číselné rozsahy přiřazené sloupcům identit pro předplatná publikacím, pro které replikace automaticky spravuje přiřazení rozsahů. |
| MSmerge_metadataaction_request | Obsahuje jeden řádek pro každou kompenzační akci, která je nutná. Kompenzační akce se používá k vrácení změny v jednom uzlu, pokud se změna nezdařila v jiném uzlu. |
| MSmerge_partition_groups | Obsahuje jeden řádek pro každý předpočítaný oddíl v dané databázi. |
| MSmerge_past_partition_mappings | Obsahuje jeden řádek pro každý oddíl, ke kterému změněný řádek dříve patřil, ale už nepatří. |
| MSmerge_replinfo | Obsahuje jeden řádek pro každé předplatné. Tato tabulka sleduje interní informace o odeslaných a přijatých generacích. |
| MSmerge_sessions | Obsahuje řádky historie s výsledky předchozích relací úloh služby agenta sloučení. |
| MSmerge_settingshistory | Obsahuje historii změn provedených ve vlastnostech článku a publikace s jedním řádkem pro každou provedenou změnu. |
| MSmerge_tombstone | Obsahuje informace o odstraněných řádcích a umožňuje šíření odstranění jiným odběratelům. |
| MSrepl_errors | Obsahuje podrobné informace o všech selháních agenta. |
| sysmergearticles | Obsahuje jeden řádek pro každý sloučený článek. |
| sysmergepartitioninfo | Obsahuje informace o oddílech pro každý článek s jedním řádkem pro každý článek. |
| sysmergepartitioninfoview | Obsahuje informace o dělení článků tabulky. |
| sysmergepublications | Obsahuje jeden řádek pro každou sloučenou publikaci. |
| sysmergeschemaarticles | Sleduje články pouze se schématy, jako jsou uložené procedury. |
| sysmergeschemachange | Obsahuje informace o publikovaných článcích generovaných agentem snímků. |
| Sysmergesubscriptions | Obsahuje jeden řádek pro každého odběratele. |
| SysMergeSubsetFilters | Obsahuje informace o joinovacím filtru pro rozdělené články. |
Kromě toho se MSsnapshotdeliveryprogress tabulka vytvoří v každé databázi předplatného a MSsubscription_properties tabulka se vytvoří v každé databázi předplatného, která používá pull odběr.
| Tabulka | Popis |
|---|---|
| MSsnapshotdeliveryprogress | Sleduje soubory, které byly úspěšně doručeny odběrateli při použití snímku. Tato data slouží k obnovení doručování souborů v případě, že agent sloučení nedoručí všechny soubory během relace. |
| MSsubscription_properties | Obsahuje informace o parametrech potřebné ke spuštění agentů replikace u odběratele. |