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

Применимо к: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 v18, помощник по настройке запросов может помочь пользователям в следовании рекомендуемому рабочему процессу. Дополнительные сведения: Обновление баз данных с помощью помощника по настройке запросов.

См. также раздел