КОРЕКЦИЯ: "процесът не може да изпълни" грешка, когато зададете ненулева стойност в параметъра MaxCmdsInTran на регистъра четец агент в SQL Server 2008 R2 или SQL Server 2012

Прилага се за: SQL Server 2008 R2 Service Pack 1

Microsoft разпространява Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) или Microsoft SQL Server 2012 решава в един файл за изтегляне. Тъй като корекциите са сборни, всяка нова версия съдържа всички актуални корекции и всички актуализации на защитата, които са били включени в предишните SQL Server 2008 R2 Service Pack 1 (SP1) или Microsoft SQL Server 2012 актуализация версия.

Симптоми


Да разгледаме следния сценарий:
  • Създавате поне две публикации репликация при транзакции въз основа на една база данни на Microsoft SQL Server 2008 R2 или в Microsoft SQL Server 2012.
  • Всяка публикация е поне една статия. Статиите се припокрива и всеки член принадлежи само една публикация.
  • Зададете свойството @sync_method издания на едновременно.
  • Зададете свойството @immediate_sync издания на True.
  • Задайте параметъра MaxCmdsInTran на регистъра четец агент на ненулева стойност.
  • Една от публикации получава много вмъква наведнъж.
  • Транзакцията е извършено, агент на четец на регистрационния файл започва да процес и разделяне на операцията по параметъра MaxCmdsInTran .
  • Агентът на снимка на друга публикация започва преди регистър четец агент завърши задачата.
В този случай четец агент регистрационния файл е неуспешно и получавате следното съобщение за грешка:
Процесът не може да се изпълни "sp_MSadd_replcmds" на "server\instance". (Източник: MSSQLServer, номер на грешка: 1007) Не може да вмъкне ред с дублиран ключ в обект "dbo. MSrepl_commands' с уникален индекс "ucMSrepl_commands". (Източник: MSSQLServer, номер на грешка: 1007)

Решение


Информация за сборна актуализация

SQL Server 2012

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

Сборния пакет за актуализация 4 за SQL Server 2008 R2 SP1

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

Заобиколно решение


За да решите проблема по заобиколен начин, използвайте един от следните методи:
  • Зададено свойството @sync_method издания на "паралелни" и не собственост @immediate_sync издания на "true".
  • Задайте стойността на параметъра MaxCmdsInTran на нула.

Статус


Microsoft потвърждава, че това е проблем в продуктите на Microsoft, изброени в раздела "Отнася се за".