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


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

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Почему фигура плана запроса?

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

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

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

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

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

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

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

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

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

  • Улучшайте управляемость и масштабируемость без внесения изменений в приложения за счет использования усовершенствований, не ограниченных определенным уровнем совместимости базы данных. В SQL Server они включаются, например:

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

Проверка поддерживаемого уровня совместимости

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

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

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

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

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

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

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

Примечание.

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

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

Защита плана запросов

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

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

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

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

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