Сертификация на совместимость

Применимо к:База данныхSQL Server Azure SQL Управляемый экземпляр SQL Azure

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

Одно и то же ядро СУБД лежит в основе как SQL Server, так и Базы данных SQL Azure (включая Управляемый экземпляр SQL Azure). Это совместно используемое ядро СУБД означает, что пользовательскую базу данных можно легко перемещать между локальным SQL Server и Базой данных SQL Azure. При этом код приложения, выполняемый в базе данных как Transact-SQL, продолжит работать так же, как в исходной системе.

Для каждого нового выпуска SQL Server уровень совместимости по умолчанию устанавливается в зависимости от версии Компонент Database Engine. Однако уровень совместимости предыдущих версий сохраняется, чтобы совместимость существующих приложений не терялась. Таблицу совместимости можно просмотреть здесь. Поэтому если приложение было сертифицировано для работы с определенной версией SQL Server, оно сертифицировано для работы на уровне совместимости по умолчанию этой версии.

Например, в SQL Server 2016 (13.x); по умолчанию использовался уровень совместимости базы данных 130. Так как уровни совместимости определяют функциональное поведение и способ оптимизации запросов Transact-SQL, база данных, сертифицированная для работы в SQL Server 2016 (13.x), была неявно сертифицирована на уровне совместимости базы данных 130. Эта база данных может работать "как есть" в более поздней версии SQL Server (например, SQL Server 2019 (15.x)) и в База данных SQL Azure при условии, что сохраняется уровень совместимости базы данных 130.

Это фундаментальный принцип модели непрерывной интеграции Microsoft База данных SQL Azure. Компонент Database Engine постоянно улучшается и обновляется в Azure, но так как для существующих баз данных сохраняется текущий уровень совместимости, они продолжают работать, как было задумано, даже после обновления базового Компонент Database Engine.

Этот же принцип используют SharePoint Server 2016 и SharePoint Server 2019 для сертификации на SQL Server и Управляемый экземпляр SQL Azure, что позволяет развертывать любые Компонент SQL Server Database Engine, которые могут использовать поддерживаемые уровни совместимости баз данных для этих версий SharePoint Server. Дополнительные сведения см. в статьях Требования к оборудованию и программному обеспечению для SharePoint Server 2016и Требования к оборудованию и программному обеспечению для SharePoint Server 2019.

Управление рисками при обновлении с помощью сертификации на совместимость

Сертификация на совместимость — эффективный подход к модернизации базы данных. Выполняя сертификацию на уровне совместимости, разработчики устанавливают технические требования для поддержки приложения в SQL Server и База данных SQL Azure, но отделяют жизненный цикл приложения от жизненного цикла платформы баз данных. Это позволяет компаниям обновлять ядро СУБД SQL Server по мере необходимости в соответствии с политиками жизненного цикла, используя новые улучшения масштабируемости и производительности, которые не зависят от кода, а подключаемые приложения поддерживают свое функциональное состояние посредством обновлений.

Возможность негативного воздействия на функциональность и производительность — основной фактор риска при любом обновлении. Сертификация на совместимость позволяет уверенно управлять такими рисками.

  • Что касается поведения Transact-SQL, любое изменение означает, что приложение должно пройти повторную сертификацию для подтверждения правильности его работы. Однако уровень совместимости базы данных обеспечивает обратную совместимость с более ранними версиями SQL Server только для указанной базы данных, а не всего сервера. Сохранение уровня совместимости базы данных гарантирует, что существующие запросы приложения будут работать одинаково до и после обновления ядра СУБД. Дополнительные сведения о поведении Transact-SQL и уровнях совместимости см. в разделе Использование уровней совместимости для обеспечения обратной совместимости.

  • Если говорить о производительности, то, поскольку с каждой новой версией в оптимизатор запросов вводятся усовершенствования, в разных версиях Компонент Database Engine можно было бы ожидать различий в планах запросов. Различия в планах запросов при обновлении обычно приводят к возникновению риска, если некоторые изменения могут негативно сказаться на определенном запросе или рабочей нагрузке. В свою очередь, именно это обычно приводит к необходимости повторной сертификации приложений, что может задерживать обновление и создавать проблемы с жизненным циклом и поддержкой.

    Именно в целях устранения рисков, возникающих при обновлении, улучшения оптимизатора запросов ограничиваются уровнем совместимости по умолчанию нового выпуска (другими словами, самым высоким уровнем совместимости, доступным для новой версии). Сертификация на совместимость включает в себя защиту формы плана запроса: представление о том, что сохранение уровня совместимости базы данных сразу после обновления ядра СУБД означает использование той же модели оптимизации запросов в новой версии, что и до обновления, а форма плана запроса не должна измениться.

    Дополнительные сведения см. в разделе Для чего нужна форма плана запроса?.

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

Важно!

Для существующего приложения, которое уже сертифицировано для заданного уровня совместимости, обновите Компонент SQL Server Database Engine и сохраните предыдущий уровень совместимости базы данных. В этом сценарии нет необходимости в повторной сертификации приложения. Дополнительные сведения см. в разделе Уровни совместимости и обновления ядра СУБД далее в этой статье.

Если вы разрабатываете новое приложение, или существующему приложению требуется использовать новые возможности, такие как интеллектуальная обработка запросов, или какие-либо новые инструкции Transact-SQL, запланируйте обновление уровня совместимости до последнего доступного в SQL Server и проведите повторную сертификацию приложения для работы на этом уровне. Дополнительные сведения о повышении уровня совместимости базы данных см. в разделе Рекомендации по обновлению уровня совместимости базы данных.

Для чего нужна форма плана запроса?

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

Чтобы сохранить предсказуемую производительность запросов во время обновления, необходимо использовать одну и ту же форму плана запроса. Это можно сделать, не изменяя уровень совместимости базы данных сразу после обновления несмотря на разные версии базового экземпляра Компонент Database Engine. Если в экосистеме выполнения запросов больше ничего не изменилось (например, доступные ресурсы или механизм распространения данных в базовых данных не претерпели значительных изменений), производительность запроса должна остаться прежней.

Однако сохранение формы плана запроса — это не единственный момент, который может повлиять на производительность после обновления. При перемещении базы данных в более новый экземпляр Компонент Database Engine и внесении изменений в среду могут появиться факторы, которые немедленно затронут производительность запроса, даже если у плана запроса будет одна форма в разных версиях. Эти изменения могут включать в себя новый Компонент Database Engine с большим или меньшим объемом доступных ресурсов памяти и ЦП, изменения параметров конфигурации сервера или базы данных, а также изменения механизма распространения данных, влияющие на создание плана запроса. Поэтому важно понимать, что поддержка уровня совместимости базы данных обеспечивает защиту от изменений в форме плана запроса, но не защищает от других факторов среды (некоторые из них являются инициированными пользователем изменениями), влияющих на производительность запросов.

Дополнительные сведения см. в статье Руководство по архитектуре обработки запросов.

Преимущества сертификации на совместимость

У сертификации базы данных как подхода, основанного на совместимости, а не на конкретных версиях, есть ряд прямых преимуществ.

  • Отделение сертификации приложения от платформы. Так как ядро СУБД является общим, приложениям, которым нужно просто выполнять запросы Transact-SQL, не требуется поддерживать отдельные процессы сертификации для Azure и локальной среды.
  • Снижение рисков при обновлении вследствие того, что во время модернизации платформы баз данных циклы обновления на уровне приложений и на уровне платформы баз данных можно разделить, чтобы сократить перерывы в работе и улучшить управление изменениями.
  • Обновление без изменения кода. Обновление до новой версии SQL Server или Базы данных SQL Azure можно выполнить без изменения кода, сохранив тот же уровень совместимости, что и у исходной системы. Кроме того, не нужно будет выполнять немедленную повторную сертификацию до тех пор, пока приложению не потребуется использовать улучшения, которые доступны только на более высоком уровне совместимости базы данных.
  • Улучшайте управляемость и масштабируемость без внесения изменений в приложения за счет использования усовершенствований, не ограниченных определенным уровнем совместимости базы данных. В SQL Server к ним относятся, например:

Для новых баз данных по-прежнему задается уровень совместимости по умолчанию версии Компонент Database Engine. Но когда база данных восстанавливается или подключается из любой более ранней версии SQL Server к новой версии SQL Server или Базы данных SQL Azure, эта база данных сохраняет свой существующий уровень совместимости.

Важно!

Перед переносом базы данных в новую версию SQL Server или База данных SQL Azure убедитесь в том, что уровень совместимости базы данных по-прежнему поддерживается. Таблицу поддержки уровня совместимости базы данных можно просмотреть здесь.

При обновлении базы данных с уровнем совместимости ниже допустимого (например, уровнем 90, который был уровнем по умолчанию в SQL Server 2005 (9.x)) устанавливается минимальный допустимый уровень совместимости (100).

Чтобы определить текущий уровень совместимости, запросите столбец compatibility_level в представлении sys.databases.

Уровни совместимости и обновления ядра СУБД

Чтобы обновить Компонент Database Engine до последней версии с сохранением уровня совместимости базы данных, существовавшего до обновления, и ее состояния поддержки, рекомендуется выполнить статическую функциональную проверку контактной зоны кода приложения в базе данных (объекты программирования, включая хранимые процедуры, функции, триггеры и пр.) и в приложении (используя трассировку рабочей нагрузки для записи кода, отправляемого приложением).

Это легко сделать, использовав Помощник по миграции данных (Майкрософт) (DMA). Отсутствие в выходных данных DMA ошибок, связанных с отсутствием или несовместимостью функциональных возможностей, позволит избежать снижения функциональности приложения в новой конечной версии. Если требуется внести изменения, чтобы гарантировать, работоспособность базы данных в новой версии, DMA позволит точно определить, где требуется внести изменения, и какие обходные решения доступны. Дополнительные сведения см. в разделе Общие сведения о Помощнике по миграции данных.

Совет

Эта функциональная проверка особенно важна при перемещении базы данных из устаревшей версии (например, SQL Server 2008 R2 (10.50.x) или SQL Server 2012 (11.x)) в новую версию базы данных SQL Server или Azure SQL, так как код приложения может использовать неподдерживаемый transact-SQL, который не защищен уровнем совместимости базы данных. Но при переходе с более новой версии (такой как SQL Server 2016 (13.x)) на SQL Server 2019 (15.x) или Базу данных SQL Azure, нет причин волноваться о неподдерживаемой версии Transact-SQL. Дополнительные сведения о неподдерживаемых версиях Transact-SQL см. в разделе Использование уровня совместимости для обеспечения обратной совместимости.

Примечание

DMA поддерживает уровень совместимости базы данных 100 и выше. SQL Server 2005 (9.x) как исходная версия не поддерживается.

Важно!

Microsoft рекомендует проводить минимальное необходимое тестирование для проверки успешности обновления с сохранением прежнего уровня совместимости базы данных. Вам следует определить, что является минимальным необходимым тестированием, с учетом особенностей вашего приложения и сценария.

Важно!

Microsoft обеспечивает защиту формы плана запроса в указанных ниже случаях.

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

Любая регрессия формы плана запроса (по сравнению с исходной версией SQL Server) в описанных выше ситуациях требует принятия мер. Обратитесь в службу поддержки клиентов Майкрософт.

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