KB2733630 – Агентът за обединяване може да не успее при синхронизацията на репликацията на обединяване в SQL Server

Отнася се за
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)

Симптоми

По време на синхронизирането на репликацията чрез обединяване в Microsoft SQL Server 2008 и по-нови версии на SQL Server агентът за обединяване може да е неуспешен. Освен това се извежда следното съобщение за грешка:

Забележка

Агентът за обединяване е неуспешен, след като е открил, че почистването на метаданните, базирано на съхранение, е изтрило метаданните при абоната за промени, които още не са изпратени до издателя. Трябва да инициализирате отново абонамента (без качване). (Източник: MSSQL_REPL, номер на грешка: MSSQL_REPL-2147199401)

Получаване на помощ: http://help/MSSQL_REPL-2147199401

Този проблем може да се дължи на няколко причини. Те включват много причини, които се очакват при определени обстоятелства. За да определите дали не сте се натъкнали неочаквано на тази грешка, прегледайте подробностите за метаданните, които са описани в раздел "Причина".

Причина

Причината за този проблем може да бъде намерена в следните таблици за системата на абоната:

  • dbo.sysMergeSubscriptions
  • dbo. MsMerge_Genhistory

Уверете се, че агентът за обединяване вече не се синхронизира. След това изпълнете следната заявка и прегледайте резултатите:

select sentgen from SubscriberDB.dbo.sysMergeSubscriptions where pubid = subid and sentgen is not null

Резултати от заявката

Колоната sentgen маркира най-старата група от промени, които абонатът е изпратил на издателя. Ако са върнати множество стойности, прегледайте другите колони в таблицата dbo.sysMergeSubscriptions, за да се уверите, че преглеждате метаданните за правилната публикация. След това използвайте стойността, която тази заявка връща, в следната заявка:

select top 20 * from SubscriberDB.dbo.MSmerge_genhistory where generation >= sentgen_value order by generationРезултатът от заявката трябва да изглежда така:

Резултат от заявката по поколение

Може да възникне грешката неочаквано, когато са изпълнени всички изброени по-долу условия:

  • Стойността в колоната за генериране в първия ред е малко по-голяма от стойността на sentgen в предишната заявка.
  • Стойността в колоната genstatus е 4.
  • Стойността в колоната "ChangeCount е 0".

Забележка: Стойността на любимата колона от първия ред обикновено е много по-стара от стойността на тази колона в другите редове.

Решение

За да отстраните проблема, инициализирайте отново абоната, който е произвел грешката.

В някои случаи може да успеете да разрешите този проблем без пълно повторно инициализиране. Свържете се с отдела за поддръжка на клиенти на Microsoft за информация за възможно заобиколно решение.

За да предотвратите бъдещи повторения на този проблем, приложете една от следните корекции в зависимост от вашата версия на SQL Server.

Кумулативна информация за актуализацията

SQL Server 2008

В SQL Server 2008 няма корекция за този проблем.

SQL Server 2008 R2 Service Pack 2

Корекцията за този проблем е издадена за първи път в кумулативна актуализация 3. За допълнителна информация как да получите този сборен пакет за актуализация за SQL Server 2008 R2 Service Pack 2, щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2754552 Сборен пакет за актуализация 3 за SQL Server 2008 R2 Service Pack 2
 Забележка: Тъй като компилациите са кумулативни, всяка нова корекция съдържа всички актуални поправки и корекции на защитата, които са били включени в предишното издание на корекция за SQL Server 2008 R2 Service Pack 2. Препоръчваме ви да помислите за прилагане на най-новото издание на корекцията, което съдържа тази гореща корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2730301 Компилациите на SQL Server 2008 R2, които са издадени след издаването на SQL Server 2008 R2 Service Pack 2

SQL Server 2012

Корекцията за този проблем е издадена за първи път в кумулативна актуализация 4. За допълнителна информация как да получите този сборен пакет за актуализация за SQL Server 2012, щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2758687 Сборен пакет за актуализация 4 за SQL Server 2012
 Забележка: Тъй като компилациите са кумулативни, всяка нова корекция съдържа всички актуални поправки и корекции на защитата, които са били включени в предишното издание на корекция на SQL Server 2012. Препоръчваме ви да помислите за прилагане на най-новото издание на корекцията, което съдържа тази гореща корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2692828 Компилациите на SQL Server 2012, които са издадени след издаването на SQL Server 2012

SQL Server 2008 R2 Service Pack 1

Корекцията за този проблем е издадена за първи път в кумулативна актуализация 8. За повече информация как да получите този сборен пакет за актуализация за SQL Server 2008 R2 Service Pack 1, щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2723743 Сборен пакет за актуализация 8 за SQL Server 2008 R2 SP1Note Тъй като компилациите са кумулативни, всяка нова корекция съдържа всички актуални поправки и корекции на защитата, които са включени в предишното издание на корекция за SQL Server 2008 R2 Service Pack 1. Препоръчваме ви да помислите за прилагане на най-новото издание на корекцията, което съдържа тази гореща корекция. За допълнителна информация щракнете върху следния номер на статия, за да прегледате статията в базата знания на Microsoft:

2567616 Компилациите на SQL Server 2008 R2, които са издадени след издаването на SQL Server 2008 R2 SP1