Příznaky
Během synchronizace replikace sloučení v systému Microsoft SQL Server 2008 a novějších verzích systému SQL Server může selhat funkce agenta sloučení. Navíc se zobrazí následující chybová zpráva:
Poznámka
Agent sloučení selhal, když zjistil, že vyčištění metadat na základě uchovávání odstranilo metadata u předplatitele pro změny, které ještě nebyly odeslány vydavateli. Předplatné musíte znovu inicializovat (bez nahrávání). (Zdroj: MSSQL_REPL, Číslo chyby: MSSQL_REPL-2147199401)
Získejte pomoc: http://help/MSSQL_REPL-2147199401
K tomuto problému může dojít z několika důvodů. Patří mezi ně řada důvodů, které lze za určitých okolností očekávat. Chcete-li zjistit, zda k této chybě nedošlo neočekávaně, projděte si podrobnosti o metadatech popsané v části "Příčina".
Příčina
Příčinu tohoto problému lze nalézt v následujících systémových tabulkách na účastníkovi:
- dbo.sysMergeSubscriptions
- DBO. MsMerge_Genhistory
Ujistěte se, že se agent slučování už nesynchronizuje. Potom spusťte následující dotaz a prohlédněte si výsledky:
select sentgen from SubscriberDB.dbo.sysMergeSubscriptions where pubid = subid and sentgen is not null
Sloupec sentgen označuje nejstarší skupinu změn, které předplatitel poslal vydavateli. Pokud je vráceno více hodnot, zkontrolujte ostatní sloupce v tabulce dbo.sysMergeSubscriptions a ujistěte se, že zobrazujete metadata správné publikace. Dále použijte hodnotu vrácenou tímto dotazem v následujícím dotazu:
select top 20 * from SubscriberDB.dbo.MSmerge_genhistory where generation >= sentgen_value order by generationVýstup dotazu by měl vypadat nějak takto:
K chybě může dojít neočekávaně, pokud jsou splněné všechny následující podmínky:
- Hodnota ve sloupci generování v prvním řádku je o něco větší než hodnota sentgen v předchozím dotazu.
- Hodnota ve sloupci genstatus je 4.
- Hodnota ve sloupci changecount je 0.
Poznámka: Hodnota sloupce coldate v prvním řádku je také obvykle mnohem starší než hodnota tohoto sloupce v ostatních řádcích.
Řešení
Tento problém vyřešíte opětovnou inicializací odběratele, který chybu způsobil.
V některých případech může být možné tento problém vyřešit bez úplné opětovné inicializace. Informace o možném alternativním řešení vám poskytne oddělení zákaznické podpory společnosti Microsoft.
Pokud chcete zabránit budoucím výskytům tohoto problému, použijte jednu z následujících oprav v závislosti na vaší verzi systému SQL Server.
Informace o kumulativní aktualizaci
SQL Server 2008
V systému SQL Server 2008 neexistuje žádná oprava tohoto problému.
SQL Server 2008 R2 Service Pack 2
Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 3. Další informace o získání tohoto balíčku kumulativní aktualizace pro SQL Server 2008 R2 Service Pack 2 naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
2754552 Balíček kumulativní aktualizace 3 pro SQL Server 2008 R2 Service Pack 2
Poznámka: Vzhledem k tomu, že sestavení jsou kumulativní, obsahuje každá nová verze opravy všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozího vydání opravy Service Pack 2 pro SQL Server 2008 R2. Doporučujeme zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
2730301 Buildy SQL Server 2008 R2, které byly vydány po vydání aktualizace Service Pack 2 SQL Server 2008 R2
SQL Server 2012
Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 4. Další informace o získání tohoto balíčku kumulativních aktualizací pro SQL Server 2012 naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
2758687 Balíček kumulativní aktualizace 4 pro SQL Server 2012
Poznámka: Vzhledem k tomu, že buildy jsou kumulativní, obsahuje každá nová verze opravy všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozího vydání opravy pro SQL Server 2012. Doporučujeme zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
2692828 Buildy SQL Server 2012 vydané po vydání verze SQL Server 2012
SQL Server 2008 R2 Service Pack 1
Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 8. Další informace o získání tohoto balíčku kumulativní aktualizace pro SQL Server 2008 R2 Service Pack 1 naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
2723743 Balíček kumulativní aktualizace 8 pro SQL Server 2008 R2 SP1Poznámka: Vzhledem k tomu, že buildy jsou kumulativní, obsahuje každá nová verze opravy všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozího vydání opravy Service Pack 1 pro SQL Server 2008 R2. Doporučujeme zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace naleznete v následujícím článku znalostní báze znalostní báze Microsoft Knowledge Base:
2567616 Buildy SQL Server 2008 R2, které byly vydány po vydání aktualizace SP1 SQL Server 2008 R2