データベース互換性レベルの変更とクエリ ストアの使用Change the Database Compatibility Level and use the Query Store

適用対象: ○SQL Server (Windows のみ)×Azure SQL Database ×Azure SQL Data Warehouse ×Parallel Data Warehouse APPLIES TO: yesSQL Server (Windows only) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

SQL Server 2016 (13.x)SQL Server 2016 (13.x) から SQL Server 2017SQL Server 2017 では、一部の変更は、データベースの互換性レベルが変更された後に有効になります。In SQL Server 2016 (13.x)SQL Server 2016 (13.x) through SQL Server 2017SQL Server 2017, some changes are only enabled once the database compatibility level has been changed. これは、次の理由のためです。This was done for several reasons:

  • アップグレードは一方向の操作である (ファイル形式をダウン グレードできない) ため、データベース内で新機能を有効にする操作を別の操作に分離することが重要です。Since upgrade is a one-way operation (it is not possible to downgrade the file format), there is value in separating the enablement of new features to a separate operation within the database. 以前のデータベース互換性レベルに設定を戻すことができます。It is possible to revert a setting to a prior database compatibility level. 新しいモデルでは、停止期間中に発生する処理の数が減ります。The new model reduces the number of things that must happen during an outage window.

  • クエリ プロセッサに対する変更は、複雑な影響をもたらす可能性があります。Changes to the query processor can have complex effects. システムに対する "良い" 変更は、ほとんどのワークロードには有益であっても、その他のワークロードにとって重要なクエリで許容できない回帰を引き起こす可能性があります。Even though a "good" change to the system may be great for most workloads - it may cause an unacceptable regression on an important query for others. アップグレード プロセスからこのロジックを分離すると、クエリ ストアなどの機能は、プラン選択の回帰を迅速に緩和し、さらには実稼働サーバーで完全に回避できます。Separating this logic from the upgrade process, allows for features such as the Query Store, to mitigate plan choice regressions quickly or even avoid them completely in production servers.

重要

SQL Server 2017 (14.x)SQL Server 2017 (14.x) では、データベースを装着したか復元したとき、また、インプレース アップグレード後、以下の動作が予想されます。The below behaviors are expected for SQL Server 2017 (14.x)SQL Server 2017 (14.x) when a database is attached or restored, and after an in-place upgrade:

  • アップグレード前のユーザー データベースの互換性レベルが 100 以上の場合は、アップグレード後も互換性レベルは変わりません。If the compatibility level of a user database was 100 or higher before the upgrade, it remains the same after upgrade.
  • アップグレード前のユーザー データベースの互換性レベルが 90 の場合、アップグレードされたデータベースの互換性レベルは 100 に設定されます。これは、SQL Server 2017 (14.x)SQL Server 2017 (14.x) でサポートされている下限の互換性レベルです。If the compatibility level of a user database was 90 before upgrade, in the upgraded database, the compatibility level is set to 100, which is the lowest supported compatibility level in SQL Server 2017 (14.x)SQL Server 2017 (14.x).
  • tempdb、model、msdb、および Resource データベースの互換性レベルは、アップグレード後に現在の互換性レベルに設定されます。The compatibility levels of the tempdb, model, msdb and Resource databases are set to the current compatibility level after upgrade.
  • master システム データベースは、アップグレード前の互換性レベルを保持します。The master system database retains the compatibility level it had before upgrade.

新しいクエリ プロセッサの機能を有効にするためのアップグレード プロセスは、製品のリリース後のサービス モデルに関連付けられます。The upgrade process to enable new query processor functionality is related to the post-release servicing model of the product. それらの修正プログラムの一部は、トレース フラグ 4199 でリリースされます。Some of those fixes are released under trace flag 4199. 修正プログラムを必要とするユーザーは、他のユーザーにとって予期しない回帰を引き起こすことなくそれらの修正プログラムを適用できます。Customers needing fixes can opt-in to those fixes without causing unexpected regressions for other customers. クエリ プロセッサの修正プログラムのリリース後のサービス モデルは、 ここに記載されています。The post-release servicing model for query processor hotfixes is documented here. SQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降では、新しい互換性レベルに移行した場合、トレース フラグ 4199 は不要になります。これは、それらの修正プログラムは最新の互換レベルで既定で有効になっているためです。Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), moving to a new compatibility level implies that trace flag 4199 is no longer needed, because those fixes are now enabled by default in the latest compatibility level. そのため、アップグレード プロセスの一環として、アップグレード プロセスが完了したら、4199 が無効になっていることを検証することが重要です。Therefore, as part of the upgrade process, it is important to validate that 4199 is not enabled once the upgrade process completes.

注意

ただし、RTM の後にリリースされた新しいクエリ プロセッサの修正プログラムを有効にするためには (該当する場合)、トレース フラグ 4199 が必要です。However, trace flag 4199 is still needed to enable any new query processor fixes released after RTM, if applicable.

以下のような、クエリ プロセッサを最新バージョンのコードにアップグレード場合に推奨されるワークフローについては、「新しい SQL Server にアップグレードするときにパフォーマンスの安定性を維持する」を参照してください。The recommended workflow for upgrading the query processor to the latest version of the code is documented in the Keep performance stability during the upgrade to newer SQL Server section of Query Store Usage Scenarios, as seen below.

query-store-usage-5query-store-usage-5

SQL Server Management StudioSQL Server Management Studio v18 以降では、ユーザーはクエリ調整アシスタントを使用して、推奨されるワークフローのガイドを得ることができます。Starting with SQL Server Management StudioSQL Server Management Studio v18, users can be guided through the recommended workflow using the Query Tuning Assistant. 詳細については、「クエリ調整アシスタントを使用したデータベースのアップグレード」を参照してください。For more information, see Upgrading Databases by using the Query Tuning Assistant.

参照See Also

データベースの互換性レベルの表示または変更 View or Change the Compatibility Level of a Database
クエリ ストアの使用シナリオ Query Store Usage Scenarios
ALTER DATABASE (Transact-SQL) 互換性レベル ALTER DATABASE (Transact-SQL) Compatibility Level
クエリ調整アシスタントを使用したデータベースのアップグレードUpgrading Databases by using the Query Tuning Assistant