Изменение уровня совместимости базы данных и использование хранилище запросов
Область применения: SQL Server — только Для Windows
В SQL Server 2016 (13.x) и более поздних версиях некоторые изменения включены только после изменения уровня совместимости базы данных. Это сделано по нескольким причинам:
Так как обновление является односторонней операцией (невозможно уменьшить формат файла), существует значение разделения включения новых функций на отдельную операцию в базе данных. Можно вернуть параметр на предыдущий уровень совместимости базы данных. Новая модель сокращает количество операций, которые должны быть выполнены во время отказа системы.
Изменения в обработчике запросов могут иметь сложные последствия. Даже небольшое "удобное" изменение в системе, которое подойдет большинству рабочих нагрузок, может привести к неприемлемой регрессии в каком-либо важном запросе для других нагрузок. Отделение этой логики от процесса обновления позволяет таким компонентам, как хранилище запросов, быстро нивелировать регрессию, связанную с выбором плана, и даже полностью избежать подобных проблем в рабочей среде.
Для SQL Server 2017 (14.x) ожидается следующее поведение при присоединении или восстановлении базы данных и после обновления на месте:
- Если уровень совместимости пользовательской базы данных до обновления был 100 или выше, после обновления он останется таким же.
- Если уровень совместимости пользовательской базы данных был 90 до обновления, в обновленной базе данных устанавливается уровень совместимости 100, который является самым низким поддерживаемым уровнем совместимости в SQL Server 2017 (14.x).
- Уровни совместимости
tempdb
баз данных иmodel
msdb
ресурсов устанавливаются на текущий уровень совместимости после обновления. - Системная база данных
master
сохраняет уровень совместимости, который она имела до обновления.
Процесс обновления для включения нового обработчика запросов относится к модели обслуживания, которая предназначена для периода после выпуска продукта. Некоторые из этих исправлений выпускаются под флагом трассировки 4199. Клиенты, нуждающиеся в исправлениях, могут отказаться от этих исправлений, не вызывая непредвиденных регрессий для других клиентов. Модель обслуживания, предназначенная для периода после выпуска исправления обработчика запросов, описана здесь. Начиная с SQL Server 2016 (13.x), переход на новый уровень совместимости подразумевает, что флаг трассировки 4199 больше не нужен, так как эти исправления теперь включены по умолчанию в последнем уровне совместимости. Поэтому в процессе обновления важно убедиться, что 4199 не включен после завершения процесса обновления.
Примечание.
Флаг трассировки 4199 по-прежнему необходим для включения новых исправлений обработчика запросов, выпущенных после RTM, если применимо.
Рекомендуемый рабочий процесс для установки последней версии кода в обработчике запросов представлен в разделе Обеспечение стабильной производительности во время обновления до более новой версии раздела SQL Server "Сценарии использования хранилища запросов" ниже.
Начиная с SQL Server Management Studio версии 18 пользователи могут просматривать рекомендуемый рабочий процесс с помощью помощника по настройке запросов. Дополнительные сведения: Обновление баз данных с помощью помощника по настройке запросов.