KB2733630 – Agent sloučení může selhat během synchronizace replikace sloučení v SQL Server

Platí pro
SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Parallel Data Warehouse SQL Server 2008 R2 Standard SQL Server 2008 R2 Web SQL Server 2008 R2 Workgroup SQL Server 2008 Standard SQL Server 2008 Web SQL Server 2008 Workgroup SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Enterprise Core SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Web - duplicate (do not use)

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

Výsledky dotazu

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:

Výsledek dotazu podle generování

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