Проблемы
Предположим, что вы используете репликацию транзакций в Microsoft SQL Server 2008 и на публикации запущен запрос на обновление. Когда вы обновляете SQL Server до SQL Server 2012 или SQL Server 2014, а запрос на обновление не распространяется до обновления, агент чтения журнала может завершиться сбоем со следующей ошибкой:
<Date> <Time> Publisher: {Call sp_replcmds (500; 0; 0;; 0; 500000)}<дата> <время> состояние: 0, код: 20011, текст: "не удалось выполнить ' sp_replcmds ' для '< имя издателя>'. '.<Date> <Time> Процессу не удалось выполнить команду "sp_replcmds" для "<имя издателя>".<Date> <Time> Состояние агента REPL: 6<дата> <время> состояние: 0, код: 542, текст: "обнаружено недопустимое значение даты и времени. Значение превышает год 9999. ".<Date> <Time> Состояние: 0, код: 3621, текст: "инструкция была прервана.".<Date> <Time> Состояние: 0, код: 22037, текст: "не удалось выполнить команду" sp_replcmds "для"<имя издателя>".".
Даже если эта проблема не возникла, обновленные записи журнала для инструкций UPDATE по-прежнему могут быть неправильно интерпретированы агентом чтения журнала, и в агенте распространителя могут возникать указанные ниже ошибки.
515 не может вставить значение NULL в столбец "<имя столбца>", таблица "<имя таблицы>"; столбец не допускает значения NULL. ОБНОВЛЕНИЕ завершается сбоем.
Примечание.
-
Различные типы данных и ограничения могут приводить к возникновению различных ошибок, и эта проблема даже может привести к неконвергенции сообщений.
-
Эта проблема возникает при переходе с SQL Server 2008 или SQL Server 2008 R2 на SQL Server 2012 или SQL Server 2014.
Решение
Если ошибка "515" не может вставить значение NULL в столбец "<имя столбца>", таблица "<имя таблицы>"; столбец не допускает значения NULL. В агенте распространителя возникла ошибка обновления, необходимо повторно инициализировать репликацию. Это исправление не устраняет эту ошибку. Чтобы избежать этой ошибки, отключите агент чтения журнала перед обновлением, обновите все способы до этого исправления, а затем снова включите агент чтения журнала. Эта проблема впервые устранена в следующем накопительном обновлении SQL Server.
Накопительное обновление 2 для SQL Server 2012 SP2 /en-us/help/2983175
Накопительное обновление 3 для SQL Server 2014 /en-us/help/2984923
Накопительное обновление 11 для SQL Server 2012 с пакетом обновления 1 (SP1) /en-us/help/2975396
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".