Проблемы с вопросами SQL Replication и sp_vupgrade_replication - PullRequest
2 голосов
/ 18 октября 2010

У меня есть база данных из SQL Server 2005, которую я программно присоединяю к экземпляру SQL Server 2008 R2, а затем перестраиваю репликацию в некоторых таблицах (через некоторые предварительно запеченные сценарии, которые работали в течение небольшого времени) с другим сервером, на котором все еще работает SQL Server 2005.

Достаточно сказать, что это исключительно запутанное требование бизнеса.

Интересно, что при задании агента SQL Server произошла ошибка репликации с ошибкой «Неверное имя столбца« идентификатор источника »». Из того, что я могу понять из этой ссылки: http://www.experts -exchange.com / Microsoft / Development / MS-SQL-Server / Q_24145417.html - в старой базе данных должны быть обновлены различные кусочки и фрагменты, чтобы работать правильно с репликацией SQL Server 2008 R2. Этот процесс обновления так же прост, как и запуск хранимой процедуры sp_vupgrade_replication: http://technet.microsoft.com/en-us/library/ms188741.aspx

Вопрос 1: Почему ЛЮБАЯ информация о репликации запекается в базу данных, которую я присоединяю ?! Насколько я понимаю, база данных распространения содержала всю информацию о репликации. Я удалил и повторно прикрепил необновленную копию базы данных, чтобы убедиться, что она все еще не работает, чтобы убедиться, что я не схожу с ума.

Вопрос 2. Я знаю, что выполняются некоторые процедуры для обновления базы данных до определенного уровня совместимости при подключении БД к более новой версии SQL Server. Почему эта хранимая процедура не запускается?

Вопрос 3: Что именно меняет эта хранимая процедура? Могу ли я узнать что-либо еще, кроме того, что мне предлагает статья MSDN? Я не пробовал, но я уверен, что SQL Profiler просто скажет мне, что он выполняет sp_vupgrade_replication, и не даст мне никакой информации о выполняемых им запросах.

1 Ответ

2 голосов
/ 18 октября 2010

Вопрос 1: Ответственность за определение транзакций для репликации в журнале транзакций несет база данных издателя.Затем агент чтения журнала отслеживает журнал транзакций издателя, ищет отмеченные транзакции и копирует их в базу данных распространителя.См. sp_replcmds и sp_repldone для получения дополнительной информации.

Вопрос 2: Мне кажется (и это только предположение), что процедура обновляет как системные, так и пользовательские базы данных, она не запускается автоматически во время операции подключения.

Вопрос 3: Вы можете просмотреть подробности процедуры самостоятельно.

use msdb
go
sp_helptext 'sys.sp_vupgrade_replication'
go
...