Ошибка чтения журнала при добавлении узла в одноранговую репликацию SQL Server

Я пытаюсь добавить еще один узел в одноранговый кластер. В текущем состоянии у меня есть 3 сервера A, B и C. Мне нужно добавить узел D с узлом A (только). Для этого я использовал следующие шаги:

  • Сделал полную резервную копию с узла А
  • Скопировал его на узел D
  • Восстановил резервную копию
  • Добавлены публикации в обеих нодах.
  • Добавлена ​​подписка для узла D в узле A издателя с sync_type «инициализировать с резервным копированием».

Как только команды были запущены, средство чтения журнала в узле A начало выдавать следующие ошибки:

  • Процессу не удалось выполнить sp_MSadd_replcmds на узле A. (Источник: MSSQLServer, номер ошибки: 1007) Получить справку: http://help/1007
  • Транзакции, необходимые для синхронизации подписки nosync, созданной из указанной резервной копии, недоступны на распространителе. Повторите операцию еще раз с более актуальным журналом, дифференциальной или полной резервной копией базы данных. (Источник: MSSQLServer, номер ошибки: 1007) Получить справку: http://help/1007
  • Интерфейс IDistPut отключен. (Источник: MSSQL_REPL, номер ошибки: MSSQL_REPL2000) Получить справку: http://help/MSSQL_REPL2000
  • На последнем шаге не было зарегистрировано ни одного сообщения! (Источник: MSSQL_REPL, номер ошибки: MSSQL_REPL22037) Получить справку: http://help/MSSQL_REPL22037

Поскольку это влияло на репликацию p2p между узлами A, B и C, я удалил подписку для узла D. Это не устранило ошибку. При дальнейшем расследовании я обнаружил, что задание по очистке дистрибутива все еще выполняется. Вероятно, это вызвало проблему.

Теперь я просто надеюсь, что репликация p2p между уже существующими узлами A, B и C снова заработает, как это было раньше. Но все мои попытки не привели к каким-либо изменениям в агенте чтения журнала. Он застрял на той же ошибке. - Процессу не удалось выполнить sp_MSadd_replcmds на узле A. (Источник: MSSQLServer, номер ошибки: 1007) Получить справку: http://help/1007 — транзакции, необходимые для синхронизации подписка nosync, созданная из указанной резервной копии, недоступна на распространителе. Повторите операцию еще раз с более актуальным журналом, дифференциальной или полной резервной копией базы данных. (Источник: MSSQLServer, номер ошибки: 1007) Получить справку: http://help/1007 — интерфейс IDistPut закрыт вниз. (Источник: MSSQL_REPL, номер ошибки: MSSQL_REPL2000) Получить справку: http://help/MSSQL_REPL2000 — последний шаг не выполнен. записывать любое сообщение! (Источник: MSSQL_REPL, номер ошибки: MSSQL_REPL22037) Получить справку: http://help/MSSQL_REPL22037

Пожалуйста, сообщите о каких-либо шагах, чтобы решить эту проблему. Спасибо


person Pravs_thedataguy    schedule 11.12.2018    source источник


Ответы (1)


Добавление решения для всех, кто столкнулся с этой проблемой в SQL 2012: мы привлекли к этому поддержку MS. По-видимому, их хранимая процедура "sp_dropsubscriber" иногда пропускает некоторые таблицы. В нашем случае эта запись не была удалена из таблицы MSnosyncsubsetup. Как только они обнаружили это после нескольких часов анализа, была сделана резервная копия, и строка, связанная с новым подписчиком, была удалена. Это исправило программу чтения журнала, и репликация заработала должным образом.

person Pravs_thedataguy    schedule 12.12.2018