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

Область применения: 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 и уровнях совместимости см. в разделе Использование уровней совместимости для обеспечения обратной совместимости.

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

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

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

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

Внимание

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

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

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

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

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

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

Совет

Эта функциональная проверка особенно важна при перемещении базы данных из устаревшей версии (например, 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 2019 (15.x) или Базу данных SQL Azure, нет причин волноваться о неподдерживаемой версии Transact-SQL. Дополнительные сведения о неподдерживаемых версиях Transact-SQL см. в разделе Использование уровня совместимости для обеспечения обратной совместимости.

Примечание.

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

Внимание

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

Внимание

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

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

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

См. также