BUG #: 171429 (Content Maintenance)

Příznaky

Během synchronizace slučovací replikace v aplikaci Microsoft SQL Server 2008 a novějších verzích serveru SQL Server může dojít k selhání slučovacího agenta. Dále se zobrazí následující chybová zpráva:

Agent slučování selhal poté, co zjistil, že vyčištění metadat na základě uchovávání informací smazala metadata u odběratele pro změny, které ještě nebyly odeslány do aplikace Publisher. Předplatné je třeba znovu inicializovat (bez odeslání). (Zdroj: MSSQL_REPL, číslo chyby: MSSQL_REPL-2147199401) Získání nápovědy: http://help/MSSQL_REPL-2147199401

K tomuto problému může dojít z několika důvodů. To zahrnuje mnoho důvodů, které se očekávají za určitých okolností. Chcete-li zjistit, zda došlo k neočekávané chybě, prozkoumejte podrobnosti metadat, které jsou popsány v části Příčina.

Příčina

Příčinu tohoto problému naleznete v následujících systémových tabulkách účastníka:

  • dbo.sysMergeSubscriptions

  • dbo.MsMerge_Genhistory

Ujistěte se, že slučovací Agent již není synchronizovaná. Potom spusťte následující dotaz a prozkoumejte výsledky:

Vyberte sentgen z hodnoty SubscriberDB. dbo. Sysmergeodběry, kde pubid = subid a sentgen není null.Query results Sloupec sentgen označuje nejstarší skupinu změn, které odběratel odeslal vydavateli. Je-li vráceno více hodnot, Prohlédněte si ostatní sloupce v tabulce dbo. Sysmergeodběry a ujistěte se, že prohlížíte metadata pro správnou publikaci. Dále použijte hodnotu, kterou tento dotaz vrátí v následujícím dotazu:

Vyberte prvních 20 * z položky SubscriberDB. dbo. MSmerge_genhistory kde generace > = sentgen_value pořadí podle generaceVýstup dotazu by měl vypadat takto:Query result by generation k chybě může dojít neočekávaně, jsou-li splněny všechny následující podmínky:

  • Hodnota ve sloupci generace 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 prvního řádku je také obvykle mnohem starší než hodnota tohoto sloupce v ostatních řádcích.

Řešení

Chcete-li tento problém vyřešit, znovu inicializujte účastníka, který chybu vyrobil. V některých scénářích může být možné tento problém vyřešit bez úplné opakované inicializace. Informace o možném řešení získáte od oddělení podpory zákazníků společnosti Microsoft. Chcete-li předejít budoucím výskytům tohoto problému, použijte jednu z následujících oprav v závislosti na verzi serveru SQL Server.

Informace o kumulativní aktualizaci

SQL Server 2008

Na serveru SQL Server 2008 není Oprava tohoto problému k dispozici.

SQL Server 2008 R2 Service Pack 2

Oprava tohoto problému byla poprvé vydána kumulativní aktualizací 3. Další informace o tom, jak získat tento kumulativní aktualizační balíček pro SQL Server 2008 R2 Service Pack 2, získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

2754552 kumulativní aktualizační balíček 3 pro SQL Server 2008 R2 Service Pack 2Poznámka: Vzhledem k tomu, že sestavení jsou kumulativní, každá nová oprava obsahuje všechny opravy hotfix a všechny opravy zabezpečení zahrnuté v předchozí opravě aktualizace SQL Server 2008 R2 Service Pack 2. Doporučujeme zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

2730301 sestavení serveru sql Server 2008 R2, které byly vydány po vydání aktualizace SQL Server 2008 R2 Service Pack 2

SQL Server 2012

Oprava tohoto problému byla poprvé vydána v kumulativní aktualizaci 4. Další informace o tom, jak získat tento kumulativní aktualizační balíček pro SQL Server 2012, získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

2758687 kumulativní aktualizační balíček 4 pro SQL Server 2012Poznámka: Vzhledem k tomu, že sestavení jsou kumulativní, každá nová oprava obsahuje všechny opravy hotfix a všechny opravy zabezpečení zahrnuté v předchozím vydání opravy SQL Server 2012. Doporučujeme zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

2692828 sestavení serveru sql Server 2012, která byla vydána po vydání produktu 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 tom, jak získat tento kumulativní aktualizační balíček pro SQL Server 2008 R2 Service Pack 1, získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

2723743 kumulativní aktualizační balíček 8 pro SQL Server 2008 R2 SP1Poznámka: Vzhledem k tomu, že sestavení jsou kumulativní, každá nová oprava obsahuje všechny opravy hotfix a všechny opravy zabezpečení zahrnuté v předchozí opravě aktualizace SQL Server 2008 R2 Service Pack 1. Doporučujeme zvážit použití nejnovější verze opravy, která obsahuje tuto opravu hotfix. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

2567616 sestavení serveru sql Server 2008 R2, která byla vydána po vydání serveru SQL Server 2008 R2 SP1

Workaround

To work around this issue and recover from the merge agent failure, update the cleanedup_unsent_changes column and the genstatus column in the tables that you previously queried. To perform the updates, use queries such as the following:

update SubscriberDB.dbo.sysMergeSubscriptions set cleanedup_unsent_changes = 0 where sentgen = sentgen

update SubscriberDB.dbo.MSmerge_genhistory set genstatus = 2 where generation = first row from other queryFrom these example queries, the value of the sentgen placeholder would be 7253913 and the value of the first row from other query placeholder would be 7253914. Your values will be different.

After the tables are updated, restart the merge agent, and wait for synchronization to be complete. When synchronization is complete, run the following query again, and see whether the sentgen value increased:

select sentgen from SubscriberDB.dbo.sysMergeSubscriptions where pubid = subid and sentgen is not nullIf the agent is successful, and if the sentgen value increased, you successfully worked around the failure.

Author: jonclark
Writer: v-thomr
Tech Review: jonclark; ramakoni
Editor: v-anwale,v-rhowar

Potřebujete další pomoc?

Rozšiřte své znalosti a dovednosti
Projít školení
Získejte nové funkce jako první
Připojit se k programu Microsoft Insider

Byly tyto informace užitečné?

Jak jste spokojeni s kvalitou překladu?
Co ovlivnilo váš názor?

Děkujeme za váš názor!

×