互換性証明書Compatibility Certification

適用対象: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

互換性証明書を利用すると、企業はオンプレミス、クラウド、エッジに置いている 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 EngineSQL ServerSQL ServerAzure SQL データベースAzure SQL Database の両方を支援します (Managed Instance を含む)。The same データベース エンジンDatabase Engine powers both SQL ServerSQL Server and Azure SQL データベースAzure SQL Database (including Managed Instance). このように データベース エンジンDatabase Engine が共有されることで、ユーザー データベースをオンプレミスの SQL ServerSQL ServerAzure SQL データベースAzure SQL Database の間でシームレスに移動できて、かつ、Transact-SQLTransact-SQL としてデータベースで実行されるアプリケーション コードはそのソース システムで実行される場合と同様に機能します。This shared データベース エンジンDatabase Engine means that a user database can be moved seamlessly between on-premises SQL ServerSQL Server and Azure SQL データベースAzure 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 Engine のバージョンに設定されます。For each new release of SQL ServerSQL Server, the default compatibility level is set to the version of the データベース エンジンDatabase 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.

たとえば、データベース互換性レベル 130 は SQL Server 2016 (13.x)SQL Server 2016 (13.x) の既定でした。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. このデータベースは、データベース互換性レベルが 130 で維持される限り、SQL ServerSQL Server (SQL ServerSQL Server など) と Azure SQL データベースAzure SQL Database の最近のバージョンで現状のまま動作できます。This database can work as-is on a more recent version of SQL ServerSQL Server (such as SQL ServerSQL Server) and Azure SQL データベースAzure SQL Database, as long as the database compatibility level is kept as 130.

これは MicrosoftMicrosoft Azure SQL データベースAzure SQL Database 継続的インテグレーション運用モデルの基本原則です。This is a fundamental principle for MicrosoftMicrosoft Azure SQL データベースAzure SQL Database continuous integration operation model. データベース エンジンDatabase Engine は Azure で継続的に改善され、アップグレードされますが、既存のデータベースで現行の互換性レベルが維持されるため、基礎となる データベース エンジンDatabase Engine にアップグレードされた後でも、引き続き設計どおりに動作します。The データベース エンジンDatabase 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 Engine.

互換性証明書によるアップグレード リスクの管理Managing upgrade risk with Compatibility Certification

互換性証明書の使用は、データベースの最新化に役立つアプローチです。Using Compatibility Certification is a valuable approach to database modernization. 互換性レベルに基づいて認定することで、開発者は SQL ServerSQL ServerAzure SQL データベースAzure SQL Database でサポートするアプリケーションの技術的要件を設定しつつ、アプリケーションのライフサイクルをデータベース プラットフォームのライフサイクルから切り離します。By certifying based on compatibility level, developers set the technical requirements for an application to be supported on SQL ServerSQL Server and Azure SQL データベースAzure SQL Database, but decouple the application lifecycle from the database platform lifecycle. そうすることで、企業はライフサイクル ポリシーの必要に応じて SQL Server データベース エンジンSQL Server Database Engine を継続的にアップグレードしながら、コードに依存しない新しい拡張性やパフォーマンス拡張機能を活用できます。また、アップグレードを通してアプリケーションはその機能的ステータスを維持しますThis allows companies to keep the SQL Server データベース エンジンSQL 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 possibility 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 Engine アップグレードの前後で、既存のアプリケーション クエリは引き続き同じ動作を示します。Keeping the database compatibility level as-is ensures that existing application queries continue to display the same behavior before and after a データベース エンジンDatabase Engine upgrade. Transact-SQLTransact-SQL の動作と互換性レベルについては、「旧バージョンとの互換性を維持するための互換性レベルの使用」を参照してください。For more information about Transact-SQLTransact-SQL behavior and compatibility levels, see Using compatibility levels for backward compatibility.

  • パフォーマンスに関連するものにおいて、クエリ オプティマイザーの機能拡張がすべてのバージョンで導入されるため、データベース エンジンDatabase 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 Engine versions. 一部の変更が特定のクエリまたはワークロードにとって害になる可能性がある場合、1 つのアップグレードの範囲におけるクエリ プランの違いは通常、リスクとなります。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 Engine アップグレードの直後、データベース互換性レベルを現状のまま維持するという考えは、新しいバージョンでアップグレード前と同じクエリ最適化モデルを使用するということであり、クエリ プラン シェイプは変更されません。Compatibility Certification includes query plan shape protection: the notion that maintaining a database compatibility level as-is immediately after a データベース エンジンDatabase 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 データベース エンジンSQL Server Database Engine をアップグレードし、同時に前のデータベース互換性レベルを維持することは有効なアプローチであり、アプリケーションを再認定する必要がありません。As long as the application does not need to leverage enhancements that are only available in a higher database compatibility level, it is a valid approach to upgrade the SQL Server データベース エンジンSQL Server Database Engine and maintain the previous database compatibility level, with no need to recertify an application. 詳細については、この記事の後半に出てくる「互換性レベルとデータベース エンジンのアップグレード」を参照してください。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 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.

アップグレード中のクエリ パフォーマンスを常に予測できるように、基本的な目標の 1 つは、同じクエリ プラン シェイプを使用することになります。To keep query performance predictable during an upgrade, one of the fundamental goals is to ensure the same query plan shape is used. これは、基礎となる データベース エンジンDatabase Engine のバージョンが異なる場合でも、アップグレードの直後にデータベース互換性レベルを変更しないことで達成できます。This can be achieved by not changing the database compatibility level immediately after an upgrade, even though the underlying データベース エンジンDatabase 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 Engine に移動し、環境も変える場合、クエリ プランでバージョンに関係なく同じシェイプが維持されるとしても、クエリのパフォーマンスに直後に影響を与える要因が持ち込まれる可能性があります。If you move the database to a newer データベース エンジンDatabase 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 Engine で利用できるメモリと CPU を増やす/減らす、サーバーまたはデータベースの構成オプションを変更する、クエリ プランの作成方法に影響を与えるデータ配布を変更するなどがあります。These environmental changes may include the new データベース エンジンDatabase 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 Engine を共有することで、Transact-SQLTransact-SQL クエリを実行する必要があるだけのアプリケーションの場合、Azure とオンプレミスで別々の認定プロセスを維持する必要はありません。Because of its shared データベース エンジンDatabase 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 または Azure SQL データベースAzure SQL Database の新しいバージョンにアップグレードできます。上位のデータベース互換性でのみ利用できる拡張機能をアプリケーションで活用する必要がない限り、すぐに再認定する必要はありません。Upgrading to a new version of SQL ServerSQL Server or Azure SQL データベースAzure 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 Engine バージョンの既定互換性レベルに引き続き設定されます。New Databases are still set to the default compatibility level of the データベース エンジンDatabase Engine version. ただし、SQL ServerSQL Server の以前のバージョンから SQL ServerSQL Server または Azure SQL データベースAzure 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 Azure SQL データベースAzure SQL Database, the database retains its existing compatibility level.

重要

SQL ServerSQL Server または Azure SQL データベースAzure SQL Database の新しいバージョンにデータベースを移す前に、データベース互換性レベルが引き続きサポートされることを確認します。Before moving a database to a new version of SQL ServerSQL Server or Azure SQL データベースAzure SQL Database, verify if the database compatibility level is still supported. データベース互換性レベル サポート マトリックスはこちらで確認できます。The database compatibility level support matrix can be seen here.

許可されるレベル (たとえば、SQL Server 2005 (9.x)SQL Server 2005 (9.x) の既定値であった 90) より低い互換性レベルのデータベースをアップグレードすると、許可される最も下の互換性レベル (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).

現在の互換性レベルを特定するには、sys.databasescompatibility_level 列に対してクエリを実行します。To determine the current compatibility level, query the compatibility_level column of sys.databases.

互換性レベルとデータベース エンジンのアップグレードCompatibility levels and Database Engine upgrades

アップグレード前に存在したデータベース互換性レベルとそのサポート可能なステータスを維持しながら、データベース エンジンDatabase Engine を最新バージョンにアップグレードするには、Microsoft Data Migration Assistant ツール (DMA) を使用し、データベース (ストアド プロシージャ、関数、トリガーなどのプログラミング オブジェクト) およびアプリケーション (アプリケーションによって送信される動的コードをキャプチャするワークロード トレースを使用) において、アプリケーション コードの攻撃可能な領域に静的な機能検証を実行することをお勧めします。To upgrade the データベース エンジンDatabase 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), 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. 詳細については、「Data Migration Assistant の概要」を参照してください。For more information, see Overview of Data Migration Assistant.

注意

DMA は、レベル 100 以降のデータベース互換性レベルに対応しています。DMA supports database compatibility level 100 and above. ソース バージョンとしての SQL Server 2005 (9.x)SQL Server 2005 (9.x) は除外されます。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 と比較したときの) クエリ プラン シェイプ退化は対処されます。Any query plan shape regression (as compared to the source SQL ServerSQL Server) that occurs in the above conditions will be addressed. このような場合は、Microsoft カスタマー サポートにお問い合わせください。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