SQL Server: уровень совместимости базы данных после обновления

#sql #sql-server #tsql #compatibility-level

#sql #sql-сервер #tsql #уровень совместимости

Вопрос:

В настоящее время мы обновляем несколько экземпляров SQL Server с SQL Server 2008 R2 до SQL Server 2012.

Это временное решение (поскольку скоро появится поддержка Microsoft EOL для 2008 R2).

Я заметил, что после обновления для всех системных баз данных, КРОМЕ master, устанавливается значение new compatibility_level (110).

Кто-нибудь знает, почему [master] не получает new compatibility_level в рамках обновления?

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

Спасибо,

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

Ответ №1:

Из документации SQL Server 2017, однако, такое же поведение можно наблюдать и в SQL Server 2012: изменить уровень совместимости БАЗЫ ДАННЫХ (Transact-SQL)

Описанное ниже поведение ожидается для SQL Server 2017 (14.x) при подключении или восстановлении базы данных и после обновления на месте:

  • Если уровень совместимости пользовательской базы данных был 100 или выше до обновления, он остается неизменным после обновления.
  • Если уровень совместимости пользовательской базы данных до обновления составлял 90, в обновленной базе данных уровень совместимости устанавливается равным 100, что является самым низким поддерживаемым уровнем совместимости в SQL Server 2017 (14.x).
  • Уровни совместимости баз данных tempdb, model, msdb и Resource устанавливаются на текущий уровень совместимости после обновления.
  • База данных главной системы сохраняет уровень совместимости, который был у нее до обновления.

Итак, это поведение по замыслу.

Комментарии:

1. Спасибо, Алекс. Я рад видеть, что это дизайн.

2. В рамках наших усилий по минимизации рисков мы решили сохранить базы данных пользователей на старом уровне совместимости (100). Но в случае с [master] есть ли какой-либо риск изменения его на новый уровень совместимости?

3. Это обычная практика — сохранять базы данных после обновления на исходном уровне совместимости, а затем в конечном итоге переключать их все на текущий. Когда дело доходит до системных баз данных, включая master, лично я не вижу никакого риска в том, чтобы напрямую устанавливать для них текущий уровень совместимости.