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

Применимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL DatabaseПрименимо к:Applies to: даSQL ServerSQL Server (все поддерживаемые версии) yesSQL ServerSQL Server (all supported versions) ДаБаза данных SQL AzureAzure SQL DatabaseYesБаза данных SQL AzureAzure SQL Database

Сертификация на совместимость позволяет компаниям обновлять и модернизировать базу данных SQL ServerSQL Server в локальной среде, облаке и пограничной зоне, устраняя риски, связанные с совместимостью приложений.Compatibility certification allows businesses to upgrade and modernize a SQL ServerSQL Server database on-premises, in the cloud, and on the edge, eliminating risks of application compatibility.

Одно и то же Компонент Database EngineDatabase Engine лежит в основе как SQL ServerSQL Server, так и База данных SQL AzureAzure SQL Database (включая Управляемый экземпляр).The same Компонент Database EngineDatabase Engine powers both SQL ServerSQL Server and База данных SQL AzureAzure SQL Database (including Managed Instance). Это общее Компонент Database EngineDatabase Engine означает, что пользовательскую базу данных можно легко перемещать между локальным сервером SQL ServerSQL Server и База данных SQL AzureAzure SQL Database. При этом код приложения, выполняемый в базе данных как Transact-SQLTransact-SQL, продолжит работать так же, как в исходной системе.This shared Компонент Database EngineDatabase Engine means that a user database can be moved seamlessly between on-premises SQL ServerSQL Server and База данных SQL AzureAzure SQL Database, while the application code that executes in the database as Transact-SQLTransact-SQL continues to work as it would in its source system.

Для каждого нового выпуска SQL ServerSQL Server уровень совместимости по умолчанию устанавливается в зависимости от версии Компонент Database EngineDatabase Engine.For each new release of SQL ServerSQL Server, the default compatibility level is set to the version of the Компонент Database EngineDatabase Engine. Однако уровень совместимости предыдущих версий сохраняется, чтобы совместимость существующих приложений не терялась.But the compatibility level of previous versions is preserved for continued compatibility of existing applications. Таблицу совместимости можно просмотреть здесь.This compatibility matrix can be seen here. Поэтому если приложение было сертифицировано для работы с определенной версией SQL ServerSQL Server, оно сертифицировано для работы на уровне совместимости по умолчанию этой версии.Therefore, an application that was certified to work with a given SQL ServerSQL Server version was in fact certified to work on that version's default compatibility level.

Например, в SQL Server 2016 (13.x);SQL Server 2016 (13.x) по умолчанию использовался уровень совместимости базы данных 130.For example, database compatibility level 130 was the default in SQL Server 2016 (13.x);SQL Server 2016 (13.x). Так как уровни совместимости определяют функциональное поведение и способ оптимизации запросов Transact-SQLTransact-SQL, база данных, сертифицированная для работы в SQL Server 2016 (13.x);SQL Server 2016 (13.x), неявно сертифицирована на уровне совместимости базы данных 130.Because compatibility levels force specific Transact-SQLTransact-SQL functional and query optimization behaviors, a database certified to work on SQL Server 2016 (13.x);SQL Server 2016 (13.x) was implicitly certified on database compatibility level 130. Эта база данных может работать "как есть" в более поздней версии SQL ServerSQL Server (например, SQL Server 2019 (15.x)SQL Server 2019 (15.x)) и в База данных SQL AzureAzure SQL Database при условии, что сохраняется уровень совместимости базы данных 130.This database can work as-is on a more recent version of SQL ServerSQL Server (such as SQL Server 2019 (15.x)SQL Server 2019 (15.x)) and База данных SQL AzureAzure SQL Database, as long as the database compatibility level is kept as 130.

Это фундаментальный принцип модели непрерывной интеграции MicrosoftMicrosoft База данных SQL AzureAzure SQL Database.This is a fundamental principle for MicrosoftMicrosoft База данных SQL AzureAzure SQL Database continuous integration operation model. Компонент Database EngineDatabase Engine постоянно улучшается и обновляется в Azure, но так как для существующих баз данных сохраняется текущий уровень совместимости, они продолжают работать, как было задумано, даже после обновления базового Компонент Database EngineDatabase Engine.The Компонент Database EngineDatabase Engine is continuously improved and upgraded in Azure, but because existing databases keep their current compatibility level, they continue to work as designed even after upgrades to the underlying Компонент Database EngineDatabase Engine.

Этот же принцип используют SharePoint Server 2016 и SharePoint Server 2019 для сертификации на SQL ServerSQL Server и Управляемый экземпляр SQL AzureAzure SQL Managed Instance, что позволяет развертывать любые Компонент SQL Server Database EngineSQL Server Database Engine, которые могут использовать поддерживаемые уровни совместимости баз данных для этих версий SharePoint Server.This is also how SharePoint Server 2016 and SharePoint Server 2019 certify on SQL ServerSQL Server and Управляемый экземпляр SQL AzureAzure SQL Managed Instance, allowing you to deploy any Компонент SQL Server Database EngineSQL Server Database Engine that can use the supported database compatibility levels for those SharePoint Server versions. Дополнительные сведения см. в статьях Требования к оборудованию и программному обеспечению для SharePoint Server 2016и Требования к оборудованию и программному обеспечению для SharePoint Server 2019.For more information, see Hardware and software requirements for SharePoint Server 2016 and Hardware and software requirements for SharePoint Server 2019.

Управление рисками при обновлении с помощью сертификации на совместимостьManaging upgrade risk with Compatibility Certification

Сертификация на совместимость — эффективный подход к модернизации базы данных.Using Compatibility Certification is a valuable approach to database modernization. Выполняя сертификацию на уровне совместимости, разработчики устанавливают технические требования для поддержки приложения в SQL ServerSQL Server и База данных SQL AzureAzure SQL Database, но отделяют жизненный цикл приложения от жизненного цикла платформы баз данных.By certifying based on compatibility level, developers set the technical requirements for an application to be supported on SQL ServerSQL Server and База данных SQL AzureAzure SQL Database, but decouple the application lifecycle from the database platform lifecycle. Это позволяет компаниям обновлять Компонент SQL Server Database EngineSQL Server Database Engine в соответствии с политиками жизненного цикла, а также использовать улучшения в плане масштабируемости и производительности, не зависящие от кода, а подключающимся приложениям — сохранять свое функциональное состояние посредством обновлений.This allows companies to keep the Компонент SQL Server Database EngineSQL Server Database Engine upgraded as needed by lifecycle policies, as well as leveraging new scalability and performance enhancements that are not code dependant, and connecting applications maintain their functional status through upgrades.

Возможность негативного воздействия на функциональность и производительность — основной фактор риска при любом обновлении.The possibilities of adversely affecting functionality and performance are the main risk factors for any upgrade. Сертификация на совместимость позволяет уверенно управлять такими рисками.Compatibility Certification represents peace of mind in terms of managing these upgrade risks:

  • В плане поведения Transact-SQLTransact-SQL любое изменение означает, что приложение необходимо снова сертифицировать, чтобы подтвердить правильность его работы.In what relates to Transact-SQLTransact-SQL behavior, any change means that an application needs to be recertified for correctness. Однако уровень совместимости базы данных обеспечивает обратную совместимость с более ранними версиями SQL ServerSQL Server только для указанной базы данных, а не всего сервера.However, the database compatibility level setting provides backward compatibility with earlier versions of SQL ServerSQL Server only for the specified database, not for the entire server. Сохранение уровня совместимости базы данных гарантирует, что существующие запросы приложения будут работать одинаково до и после обновления Компонент Database EngineDatabase Engine.Keeping the database compatibility level as-is ensures that existing application queries continue to display the same behavior before and after a Компонент Database EngineDatabase Engine upgrade. Дополнительные сведения о поведении Transact-SQLTransact-SQL и уровнях совместимости см. в разделе Использование уровня совместимости для обеспечения обратной совместимости.For more information about Transact-SQLTransact-SQL behavior and compatibility levels, see Using compatibility levels for backward compatibility.

  • Если говорить о производительности, то, поскольку с каждой новой версией в оптимизатор запросов вводятся усовершенствования, в разных версиях Компонент Database EngineDatabase Engine можно было бы ожидать различий в планах запросов.In what relates to performance, because improvements in the Query Optimizer are introduced with every version, it could be expected to encounter query plan differences between different Компонент Database EngineDatabase Engine versions. Различия в планах запросов при обновлении обычно приводят к возникновению риска, если некоторые изменения могут негативно сказаться на определенном запросе или рабочей нагрузке.Query plan differences in the scope of an upgrade usually translate to risk, when there is potential that some changes may be detrimental for a given query or workload. В свою очередь, этот риск является побуждающей причиной для повторной сертификации, из-за которой могут откладываться обновления и возникать проблемы с жизненным циклом и поддержкой.In turn, this risk is a motivation for recertification, which can delay upgrades and pose lifecycle and support challenges. Именно в целях устранения рисков, возникающих при обновлении, улучшения оптимизатора запросов ограничиваются уровнем совместимости по умолчанию нового выпуска (другими словами, самым высоким уровнем совместимости, доступным для новой версии).Mitigating upgrade risks is why Query Optimizer improvements are gated to the default compatibility level of a new release (in other words, the highest compatibility level available for any new version). Сертификация на совместимость включает в себя защиту формы плана запроса: сохранение уровня совместимости базы данных сразу после обновления Компонент Database EngineDatabase Engine означает, что модель оптимизации запросов в новой версии остается такой же, как и до обновления, и форма плана запроса не должна изменяться.Compatibility Certification includes query plan shape protection: the notion that maintaining a database compatibility level as-is immediately after a Компонент Database EngineDatabase Engine upgrade translates into using the same query optimization model in the new version, as it was before the upgrade, and the query plan shape should not change. Дополнительные сведения см. в разделе Для чего нужна форма плана запроса?.For more information, see the Why query plan shape? section in this article.

Дополнительные сведения об уровнях совместимости см. в разделе Использование уровня совместимости для обеспечения обратной совместимости.For more information about compatibility levels, see Using compatibility levels for backward compatibility.

Важно!

Для существующего приложения, которое уже сертифицировано для заданного уровня совместимости, обновите Компонент SQL Server Database EngineSQL Server Database Engine и сохраните предыдущий уровень совместимости базы данных.For an existing application that was already certified for a given compatibility level, upgrade the Компонент SQL Server Database EngineSQL Server Database Engine and maintain the previous database compatibility level. В этом сценарии нет необходимости в повторной сертификации приложения.There is no need to re-certify an application in this scenario. Дополнительные сведения см. в разделе Уровни совместимости и обновления ядра СУБД далее в этой статье.For more information, see Compatibility levels and Database Engine upgrades later in this article.

Если вы разрабатываете новое приложение или существующему приложению требуется использовать новые возможности, такие как интеллектуальная обработка запросов, или какие-либо новые инструкции Transact-SQLTransact-SQL, спланируйте повышение уровня совместимости до последнего доступного в SQL ServerSQL Server и проведите повторную сертификацию приложения для работы на этом уровне.For new development work, or when an existing application requires use of new features such as Intelligent Query Processing, as well as some new Transact-SQLTransact-SQL, plan to upgrade the database compatibility level to the latest available in SQL ServerSQL Server, and re-certify your application to work with that compatibility level. Дополнительные сведения о повышении уровня совместимости базы данных см. в разделе Рекомендации по обновлению уровня совместимости базы данных.For more information on upgrading the database compatibility level, see Best Practices for upgrading Database Compatibility Level.

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

Форма плана запроса относится к визуальному представлению различных операторов, составляющих план запроса.Query plan shape refers to the visual representation of the various operators that make up a query plan. Сюда входят такие операторы, как поиск, сканирование, соединение и сортировка, а также связи между ними, указывающие поток данных и порядок операций, которые должны быть выполнены для получения необходимого результирующего набора.This includes operators like seeks, scans, joins, and sorts, as well as the connections between them that indicate the flow of data and the order of the operations that must be executed to produce the intended result set. Форма плана запроса определяется оптимизатором запросов.The query plan shape is determined by the Query Optimizer.

Чтобы сохранить предсказуемую производительность запросов во время обновления, необходимо использовать одну и ту же форму плана запроса.To keep query performance predictable during an upgrade, one of the fundamental goals is to ensure the same query plan shape is used. Это можно сделать, не изменяя уровень совместимости базы данных сразу после обновления несмотря на разные версии базового экземпляра Компонент Database EngineDatabase Engine.This can be achieved by not changing the database compatibility level immediately after an upgrade, even though the underlying Компонент Database EngineDatabase Engine has different versions. Если в экосистеме выполнения запросов больше ничего не изменилось (например, доступные ресурсы или механизм распространения данных в базовых данных не претерпели значительных изменений), производительность запроса должна остаться прежней.If nothing else changed in the query execution ecosystem, such as significant changes in available resources, or data distribution in the underlying data, a query's performance should remain unchanged.

Однако сохранение формы плана запроса — это не единственный момент, который может повлиять на производительность после обновления.However, keeping a query plan's shape is not the only factor that may have performance implications after an upgrade. При перемещении базы данных в более новый экземпляр Компонент Database EngineDatabase Engine и внесении изменений в среду могут появиться факторы, которые немедленно затронут производительность запроса, даже если у плана запроса будет одна форма в разных версиях.If you move the database to a newer Компонент Database EngineDatabase Engine and also make environmental changes, you may be introducing factors that will have immediate impact on a query's performance, even if the query plan retains the same shape across versions. Эти изменения могут включать в себя новый Компонент Database EngineDatabase Engine с большим или меньшим объемом доступных ресурсов памяти и ЦП, изменения параметров конфигурации сервера или базы данных, а также изменения механизма распространения данных, влияющие на создание плана запроса.These environmental changes may include the new Компонент Database EngineDatabase Engine having more or less memory and CPU resources available, changes to server or database configuration options, or changes to data distribution that affect how a query plan is created. Поэтому важно понимать, что поддержка уровня совместимости базы данных обеспечивает защиту от изменений в форме плана запроса, но не защищает от других факторов среды (некоторые из них являются инициированными пользователем изменениями), влияющих на производительность запросов.This is why it's important to understand that maintaining the database compatibility level protects against changes in the query plan shape, but offers no protection from other environmental aspects that influence query performance, some of which are user-initiated changes.

Дополнительные сведения см. в статье Руководство по архитектуре обработки запросов.For more information, see the Query Processing Architecture Guide.

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

У сертификации базы данных как подхода, основанного на совместимости, а не на конкретных версиях, есть ряд прямых преимуществ.There are several immediate benefits to database certification as a compatibility-based approach rather than a named-version approach:

  • Отделение сертификации приложения от платформы.Decouple application certification from the platform. Так как Компонент Database EngineDatabase Engine является общим, приложениям, которым необходимо просто выполнять запросы Transact-SQLTransact-SQL, не требуются отдельные процессы сертификации для Azure и локальной среды.Because of its shared Компонент Database EngineDatabase Engine, for applications that just need to execute Transact-SQLTransact-SQL queries, there is no need to maintain separate certification processes for Azure and on-premises.
  • Снижение рисков при обновлении вследствие того, что во время модернизации платформы баз данных циклы обновления на уровне приложений и на уровне платформы баз данных можно разделить, чтобы сократить перерывы в работе и улучшить управление изменениями.Reduce upgrade risks because during database platform modernization, application and database platform layer upgrade cycles can be separated for less disruption, and improved change management.
  • Обновление без изменения кода.Upgrade with no code changes. Если при обновлении до новой версии SQL ServerSQL Server или База данных SQL AzureAzure SQL Database сохранить уровень совместимости исходной системы, то изменения кода не потребуются. Кроме того, не нужно будет выполнять повторную сертификацию до тех пор, пока приложению не потребуется использовать усовершенствования, доступные только на более высоком уровне совместимости базы данных.Upgrading to a new version of SQL ServerSQL Server or База данных SQL AzureAzure SQL Database can be done with no code changes by keeping the same compatibility level as the source system, and no immediate need to recertify until such time when the application needs to leverage enhancements that are only available in a higher database compatibility level.
  • Улучшение управляемости и масштабируемости без внесения изменений в приложения за счет использования усовершенствований, не ограниченных определенным уровнем совместимости базы данных.Improve manageability and scalability without requiring application changes, using enhancements that are not gated by database compatibility level. В SQL ServerSQL Server к ним относятся, например:In SQL ServerSQL Server these include for example:

Для новых баз данных по-прежнему задается уровень совместимости по умолчанию версии Компонент Database EngineDatabase Engine.New databases are still set to the default compatibility level of the Компонент Database EngineDatabase Engine version. Однако при обновлении базы данных с любой более ранней версии SQL ServerSQL Server до новой версии SQL ServerSQL Server или База данных SQL AzureAzure SQL Database она сохраняет свой существующий уровень совместимости.But when a database is moved from any earlier version of SQL ServerSQL Server to a new version of SQL ServerSQL Server or База данных SQL AzureAzure SQL Database, the database retains its existing compatibility level.

Важно!

Перед переносом базы данных в новую версию SQL ServerSQL Server или База данных SQL AzureAzure SQL Database убедитесь в том, что уровень совместимости базы данных по-прежнему поддерживается.Before moving a database to a new version of SQL ServerSQL Server or База данных SQL AzureAzure SQL Database, verify if the database compatibility level is still supported. Таблицу поддержки уровня совместимости базы данных можно просмотреть здесь.The database compatibility level support matrix can be seen here.

При обновлении базы данных с уровнем совместимости ниже допустимого (например, уровнем 90, который был уровнем по умолчанию в SQL Server 2005 (9.x)SQL Server 2005 (9.x)) устанавливается минимальный допустимый уровень совместимости (100).Upgrading a database with a compatibility level lower than the allowed level (for example, 90 which was the default in SQL Server 2005 (9.x)SQL Server 2005 (9.x)), sets the database to the lowest compatibility level allowed (100).

Чтобы определить текущий уровень совместимости, запросите столбец compatibility_level в представлении sys.databases.To determine the current compatibility level, query the compatibility_level column of sys.databases.

Уровни совместимости и обновления ядра СУБДCompatibility levels and Database Engine upgrades

Чтобы обновить Компонент Database EngineDatabase Engine до последней версии с сохранением уровня совместимости базы данных, существовавшего до обновления, и ее состояния поддержки, рекомендуется выполнить статическую функциональную проверку контактной зоны кода приложения в базе данных (объекты программирования, включая хранимые процедуры, функции, триггеры и пр.) и в приложении (используя трассировку рабочей нагрузки для записи кода, отправляемого приложением).To upgrade the Компонент Database EngineDatabase Engine to the latest version, while maintaining the database compatibility level that existed before the upgrade and its supportability status, it is recommended to perform static functional surface area validation of the application code in the database (programmability objects such as stored procedures, functions, triggers, and others) and in the application (using a workload trace that captures the dynamic code sent by the application).

Это легко сделать, использовав Помощник по миграции данных (Майкрософт) (DMA).This can be easily done by using the Microsoft Data Migration Assistant tool (DMA). Отсутствие в выходных данных DMA ошибок, связанных с отсутствием или несовместимостью функциональных возможностей, позволит избежать снижения функциональности приложения в новой конечной версии.The absence of errors in the DMA tool output, about missing or incompatible functionality, protects application from any functional regressions on the new target version. Если требуется внести изменения, чтобы гарантировать, работоспособность базы данных в новой версии, DMA позволит точно определить, где требуется внести изменения, и какие обходные решения доступны.If changes are required to ensure your database will work in the new version, then DMA will allow you to pinpoint where changes are needed, and what workarounds are available. Дополнительные сведения см. в разделе Общие сведения о Помощнике по миграции данных.For more information, see Overview of Data Migration Assistant.

Совет

Эта функциональная проверка особенно важна при переводе базы данных с устаревшей версии (например, SQL Server 2008 R2SQL Server 2008 R2 или SQL Server 2012 (11.x)SQL Server 2012 (11.x)) на новую версию SQL ServerSQL Server или База данных SQL AzureAzure SQL Database, так как код приложения может использовать неподдерживаемую Transact-SQLTransact-SQL, не защищенную уровнем совместимости базы данных.This functional validation is especially important when moving a database from a legacy version (such as SQL Server 2008 R2SQL Server 2008 R2 or SQL Server 2012 (11.x)SQL Server 2012 (11.x)) into a new version of SQL ServerSQL Server or База данных SQL AzureAzure SQL Database, because your application code may be using discontinued Transact-SQLTransact-SQL that is not protected by database compatibility level. Но при переходе с более новой версии (например, SQL Server 2016 (13.x);SQL Server 2016 (13.x)) на SQL Server 2019 (15.x)SQL Server 2019 (15.x) или База данных SQL AzureAzure SQL Database, нет причин волноваться о неподдерживаемых Transact-SQLTransact-SQL.But when moving from a more recent version (such as SQL Server 2016 (13.x);SQL Server 2016 (13.x)) to SQL Server 2019 (15.x)SQL Server 2019 (15.x) or База данных SQL AzureAzure SQL Database, there is no discontinued Transact-SQLTransact-SQL to worry about. Дополнительные сведения о неподдерживаемых Transact-SQLTransact-SQL см. в разделе Использование уровня совместимости для обеспечения обратной совместимости.For more information about discontinued Transact-SQLTransact-SQL, see Using compatibility level for backward compatibility.

Примечание

DMA поддерживает уровень совместимости базы данных 100 и выше.DMA supports database compatibility level 100 and above. SQL Server 2005 (9.x)SQL Server 2005 (9.x) как исходная версия не поддерживается.as source version is excluded.

Важно!

MicrosoftMicrosoft рекомендует проводить минимальное необходимое тестирование для проверки успешности обновления с сохранением прежнего уровня совместимости базы данных.recommends that some minimal testing is done to validate the success of an upgrade, while maintaining the previous database compatibility level. Вам следует определить, что является минимальным необходимым тестированием, с учетом особенностей вашего приложения и сценария.You should determine what minimal testing means for your own application and scenario.

Важно!

MicrosoftMicrosoft обеспечивает защиту формы плана запроса в указанных ниже случаях.provides query plan shape protection when:

  • Новая (конечная) версия SQL ServerSQL Server работает на оборудовании, сопоставимом с оборудованием, на котором работала предыдущая (исходная) версия SQL ServerSQL Server.The new SQL ServerSQL Server version (target) runs on hardware that is comparable to the hardware where the previous SQL ServerSQL Server version (source) was running.
  • Один и тот же поддерживаемый уровень совместимости базы данных используется как в конечной версии SQL ServerSQL Server, так и в исходной версии SQL ServerSQL Server.The same supported database compatibility level is used both at the target SQL ServerSQL Server and source SQL ServerSQL Server.
  • Одна база данных и рабочая нагрузка используются в целевой системе SQL ServerSQL Server и в исходной системе SQL ServerSQL Server.The same database and workload is used both at the target SQL ServerSQL Server and the source SQL ServerSQL Server.

Любая регрессия формы плана запроса (по сравнению с исходной версией SQL ServerSQL Server) в описанных выше ситуациях требует принятия мер.Any query plan shape regression (as compared to the source SQL ServerSQL Server) that occurs in the above conditions will be addressed. Обратитесь в службу поддержки клиентов Майкрософт.Please contact Microsoft Customer Support if this is the case.

См. также:See Also

Уровень совместимости ALTER DATABASE ALTER DATABASE COMPATIBILITY LEVEL
Просмотр или изменение уровня совместимости базы данных View or Change the Compatibility Level of a Database
Рекомендации по обновлению уровня совместимости базы данныхBest Practices for upgrading Database Compatibility Level