Поделиться через


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

Область применения: SQL Server — только Для Windows

В SQL Server 2016 (13.x) и более поздних версиях некоторые изменения включены только после изменения уровня совместимости базы данных. Это сделано по нескольким причинам:

  • Так как обновление является односторонней операцией (невозможно уменьшить формат файла), существует значение разделения включения новых функций на отдельную операцию в базе данных. Можно вернуть параметр на предыдущий уровень совместимости базы данных. Новая модель сокращает количество операций, которые должны быть выполнены во время отказа системы.

  • Изменения в обработчике запросов могут иметь сложные последствия. Несмотря на то, что "хорошее" изменение системы может быть великолепным для большинства рабочих нагрузок, это может привести к неприемлемой регрессии на важный запрос в других сценариях. Разделяя эту логику от процесса обновления, можно использовать такие функции, как хранилище запросов, чтобы быстро избежать регрессии выбора плана или даже избежать их полностью на рабочих серверах.

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

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

Процесс обновления для включения нового обработчика запросов относится к модели обслуживания, которая предназначена для периода после выпуска продукта. Некоторые из этих исправлений выпускаются под флагом трассировки 4199. Клиенты, нуждающиеся в исправлениях, могут отказаться от этих исправлений, не вызывая непредвиденных регрессий для других клиентов. Модель обслуживания, предназначенная для периода после выпуска исправления обработчика запросов, описана здесь. Начиная с SQL Server 2016 (13.x), переход на новый уровень совместимости подразумевает, что флаг трассировки 4199 больше не нужен, так как эти исправления теперь включены по умолчанию в последнем уровне совместимости. Поэтому в процессе обновления важно убедиться, что 4199 не включен после завершения процесса обновления.

Примечание.

Флаг трассировки 4199 по-прежнему необходим для включения новых исправлений обработчика запросов, выпущенных после RTM, если применимо.

Сведения о рекомендуемом рабочем процессе для обновления обработчика запросов до последней версии кода см. в статье "Сохранение стабильности производительности во время обновления до более нового раздела SQL Server" сценариев использования хранилища запросов.

Схема, показывающая рекомендуемый рабочий процесс для обновления обработчика запросов до последней версии кода.

Начиная с SQL Server Management Studio 18, пользователи могут просматривать рекомендуемый рабочий процесс с помощью помощника по настройке запросов. Дополнительные сведения см. в статье об обновлении баз данных с помощью помощника по настройке запросов.