Влияние изменения уровня совместимости БД для опубликованной реплицированной БД с 90 на 100

11

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

Базы данных подписки также являются SQL Server 2008 R2, однако для целевых баз данных установлен уровень совместимости 100, и репликация работает нормально.

Если я изменю уровень совместимости для опубликованных баз данных, повлияет ли это каким-либо образом на репликацию, или это будет просто случай повторной инициализации всех подписок и перезапуска репликации?

Я подозреваю, что изменение опубликованного уровня совместимости базы данных может немного изменить работу хранимых процедур репликации, но я не уверен на 100%.

Это тот случай?

боб
источник
Интересный вопрос, но есть ли причина, по которой этим базам данных необходимо изменить уровень совместимости? Если все работает хорошо, я бы, вероятно, просто оставил это в покое ...
Джон Зигель
Основная причина, по которой я хотел бы изменить их, заключается в том, что БД и серверы, на которых они находятся, были только что обновлены с одноузлового блока 2005 до многоузлового кластера 2008R2. Кроме того, есть несколько других функциональных возможностей (таких как MERGE и т. Д.), Которые я хотел бы начать использовать.
Боб
1
Вы можете прочитать этот вопрос о том, что делает уровень совместимости: dba.stackexchange.com/questions/5166/…
Джон Сигел
Конец цивилизации. Кошки и собаки живут вместе. Массовая истерия. Я должен также упомянуть, что это может привести к закрытию правительства. Тем не менее, вы, кажется, в чистом виде по этому вопросу.
swasheck

Ответы:

4

Вы можете выполнить следующие шаги:

  • Убедитесь, что агент чтения журнала запущен для базы данных. По умолчанию агент работает непрерывно.
  • Остановите активность пользователя на опубликованных таблицах.
  • Подождите, пока агент чтения журнала скопирует транзакции в базу данных распространителя, а затем остановите агент.
  • Выполните процедуру sp_replcmds, чтобы убедиться, что все транзакции были обработаны. Набор результатов этой процедуры должен быть пустым.
  • Выполните sp_replflush, чтобы закрыть соединение от sp_replcmds.
  • Изменить уровень совместимости базы данных .
  • Запустите агент чтения журнала.
Кин Шах
источник
У меня очень похожая настройка и я хочу сделать то же самое, но моя дистрибутивная база также находится в режиме совместимости 90. Из того, что я понимаю, дистрибьютор не может работать в режиме более низкой совместимости как издатель. Итак, будет ли порядок операций просто вставить «Изменить уровень совместимости распространителя» перед «Изменить уровень совместимости (опубликованной) базы данных» - после того, как средство чтения журнала будет отключено?
Очередь Манн
@QueueMann "Change compatibility level of distributor" before "Change the compatibility level of the (published) database"это правильно. База данных распространителя должна иметь такой же или более высокий уровень совместимости, чем Publisher. Издатель может быть на том же или более низком уровне, чем распространитель.
Кин Шах
2

Мы сделали это, просто для безопасности, мы прекратили реплицировать эту базу данных, изменили уровень совместимости, а затем повторно инициализировали. Мы не понесли никаких проблем. Это была довольно маленькая публикация, и была подписана только одна база данных. Я думаю, что это может быть сложнее, так как ваши сценарии репликации усложняются. (то есть, подписываясь на БД, получая публикации от многих БД и т. д.)

rottengeek
источник