Подтвердить что ты не робот

Репликация SQL Server 2008 с ошибкой: процесс не смог выполнить 'sp_replcmds'

У меня проблема с репликацией SQL, у меня возникла проблема с исправлением. То, что я делаю, это восстановление двух БД из производственной резервной копии, а затем установка репликации между ними. Репликация, похоже, настроена без каких-либо ошибок, но когда я смотрю на состояние, я вижу сообщения об ошибках, подобные этому:

У меня проблема с репликацией SQL, у меня возникла проблема с исправлением. То, что я делаю, это восстановление двух БД из производственной резервной копии, а затем установка репликации между ними. Кажется, что репликация настроена без каких-либо ошибок, но когда я смотрю на статус в мониторе репликации, я вижу сообщения об ошибках вроде этого:

Сообщения об ошибках:

Процесс не может выполняться 'sp_replcmds' в 'MYSERVER1'. Получить help: http://help/MSSQL_REPL20011

Невозможно выполнить как базу данных потому что основной "дбо" не существует, этот тип принципала не может быть выведено из строя, или вы не есть разрешение. (Источник: MSSQLServer, Номер ошибки: 15517) Получить помощь: http://help/15517

Процесс не может выполнить 'sp_replcmds' в 'MYSERVER1'. Получить помощь: http://help/MSSQL_REPL22037

Что это значит?

4b9b3361

Ответ 1

Когда у меня была эта проблема, у моей базы данных не было установленного владельца. Я восстановил базу данных из другого домена Windows, щелкнул правой кнопкой мыши базу данных → свойства и подтвердил на вкладке "Общие", что владелец был установлен правильно. Однако на вкладке "файлы" владелец не был установлен вообще. Как только я его установил, репликация выполнялась без проблем.

Ответ 2

'dbo' отображает неверный логин. Если вы запустите select suser_sname(owner_sid) from sys.databases, вы, вероятно, получите NULL для этих двух БД. Вам нужно изменить "dbo" на действующий логин. Запустите в обеих базах данных:

ALTER AUTHORIZATION ON DATABASE::[<dbname>] TO [sa]

Ответ 3

Я обнаружил, что если вы используете фильтры статей, вы должны использовать уникальное имя фильтра. Как только я изменил имя фильтра, чтобы быть уникальным во всех статьях, он исправил эту проблему.

Ответ 4

введите описание изображения здесь

Самый простой способ исправить ошибку - использовать ALTER AUTHORIZATION в базах данных, которые имеют логическое соответствие NULL для dbo.

Ответ 5

В нашем случае учетная запись службы, на которой выполнялся экземпляр SQL, была заблокирована. После разблокировки и мы остановили/перезапустили задания агента LogReader SQL, после чего все снова стало течь.