Корпорація Майкрософт розповсюджує виправлення для Microsoft SQL Server 2008 R2 з пакетом оновлень 1 (SP1) або Microsoft SQL Server 2012 в одному файлі, який можна завантажити. Оскільки виправлення накопичуються, кожний новий випуск містить усі виправлення та всі оновлення системи безпеки, які входили до складу попередньої версії SQL Server 2008 R2 з пакетом оновлень 1 (SP1) або оновлення Microsoft SQL Server 2012.
Ознаки
Нижче описано такий сценарій.
- Ви створюєте принаймні дві транзакційні реплікаційні публікації на основі однієї бази даних у Microsoft SQL ServerSQL Server 2008 R2 або в Microsoft SQL ServerSQL Server 2012.
- У кожній публікації є хоча б одна стаття. Статті не перетинаються, і кожна стаття належить лише одному виданню.
- Ви встановлюєте @sync\_method для властивостей публікацій значення "Паралельний".
- Установлено для @immediate\_sync властивості публікації значення True.
- Ви встановлюєте для параметра MaxCmdsInTran агента читання журналів ненульове значення.
- Одна з публікацій отримує безліч вставок в одну транзакцію.
- Після фіксації транзакції агент Log Reader починає обробляти та розділяти транзакцію відповідно до параметра MaxCmdsInTran.
- Агент знімків в іншій публікації запускається раніше, ніж агент читання журналів завершує завдання.
У цьому випадку виникає збій агента читання журналів, і з'являється таке повідомлення про помилку:
Примітка.
Процес не зміг виконати 'sp_MSadd_replcmds' на 'server\instance'.
(Джерело: MSSQLServer, номер помилки: 1007)
Неможливо вставити повторюваний рядок ключа в об'єкт 'dbo. MSrepl_commands' з унікальним індексом 'ucMSrepl_commands'.
(Джерело: MSSQLServer, номер помилки: 1007)
Спосіб усунення проблеми
Сукупні відомості про оновлення
SQL Server 2012
Вирішення цієї проблеми вперше було випущено в сукупному пакеті оновлень 1 для SQL ServerSQL Server 2012. Щоб отримати додаткові відомості про цей сукупний пакет оновлень, клацніть цей номер статті, щоб переглянути її в базі знань Microsoft:
2679368 Сукупний пакет оновлень 1 за SQL Server 2012 р. Примітка. Оскільки збірки накопичуються, кожний новий випуск виправлень містить усі виправлення та всі виправлення системи безпеки, які входили до складу попереднього випуску виправлень SQL Server 2012 року. Корпорація Майкрософт рекомендує застосовувати найновіший випуск виправлень, який містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2692828 Збірки SQL Server 2012, випущені після випуску SQL Server 2012 До інсталяції SQL Server 2012 необхідно застосувати виправлення SQL Server 2012.
Сукупний пакет оновлень 4 для SQL ServerSQL Server 2008 R2 з пакетом оновлень 1 (SP1)
Вирішення цієї проблеми вперше випущено в сукупному пакеті оновлень 4. Докладні відомості про те, як отримати цей сукупний пакет оновлень для SQL Server 2008 R2 із пакетом оновлень 1 (SP1), див. номер цієї статті бази знань Microsoft:
2633146 Сукупний пакет оновлень 4 для SQL Server 2008 R2 з пакетом оновлень 1 (SP1) Оскільки збірки містяться в сукупності, кожний новий випуск виправлень містить усі виправлення та всі виправлення системи безпеки, які входили в попередній випуск виправлення SQL Server 2008 R2 з пакетом оновлень 1 (SP1). Радимо застосувати найновіший випуск виправлень, який містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2567616 Збірки SQL Server 2008 R2, випущені після випуску SQL Server 2008 R2 з пакетом оновлень 1 (SP1)
Спосіб вирішення
Щоб вирішити цю проблему, скористайтесь одним із запропонованих нижче способів.
- Не встановлюйте @sync\_method@immediate\_sync для властивості публікації значення "паралельний" і властивості публікацій значення "істина".
- Установіть значення параметра MaxCmdsInTran рівним нулю.
Стан
Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".