適用対象:SQL Server - Windows only
SQL Server 2016 (13.x) 以降では、一部の変更は、データベースの互換性レベルが変更された後に有効になります。 これは、次の理由のためです。
アップグレードは一方向の操作である (ファイル形式をダウン グレードできない) ため、データベース内で新機能を有効にする操作を別の操作に分離することが重要です。 以前のデータベース互換性レベルに設定を戻すことができます。 新しいモデルでは、停止期間中に発生する処理の数が減ります。
クエリ プロセッサに対する変更は、複雑な影響をもたらす可能性があります。 システムに対する "適切な" 変更は、ほとんどのワークロードに適している可能性がありますが、他のユーザーにとって重要なクエリに対して許容できない回帰を引き起こす可能性があります。 このロジックをアップグレード プロセスから分離することで、クエリ ストアなどの機能を使用して、プランの選択の回帰を迅速に軽減したり、運用サーバーで完全に回避したりできます。
SQL Server 2017 (14.x) では、データベースがアタッチまたは復元されたとき、およびインプレース アップグレード後に、次の動作が想定されます。
- アップグレード前のユーザー データベースの互換性レベルが 100 以上の場合は、アップグレード後も互換性レベルは変わりません。
- アップグレード前のユーザー データベースの互換性レベルが 90 の場合、アップグレードされたデータベースの互換性レベルは 100 に設定されます。これは、SQL Server 2017 (14.x) でサポートされている下限の互換性レベルです。
-
tempdb、model、msdb、およびResourceデータベースの互換性レベルは、アップグレード後に現在の互換性レベルに設定されます。 -
masterシステム データベースの互換性レベルは、アップグレード前と同じです。
新しいクエリ プロセッサの機能を有効にするためのアップグレード プロセスは、製品のリリース後のサービス モデルに関連付けられます。 これらの修正の一部は、 トレース フラグ 4199 でリリースされます。 修正プログラムを必要とするユーザーは、他のユーザーにとって予期しない回帰を引き起こすことなくそれらの修正プログラムを適用できます。 クエリ プロセッサの修正プログラムのリリース後のサービス モデルは、 ここに記載されています。 SQL Server 2016 (13.x) 以降では、新しい互換性レベルに移行すると、トレース フラグ 4199 が不要になったことが意味されます。これらの修正プログラムは、最新の互換性レベルで既定で有効になっています。 そのため、アップグレード プロセスの一環として、アップグレード プロセスが完了したら、4199 が無効になっていることを検証することが重要です。
注意
RTM の後にリリースされた新しいクエリ プロセッサ修正を有効にするには、トレース フラグ 4199 が必要です (該当する場合)。
クエリ プロセッサを最新バージョンのコードにアップグレードするための推奨ワークフローについては、「クエリ ストアの使用シナリオ」の「新しい SQL Server へのアップグレード中のパフォーマンスの安定性を維持する」を参照してください。
SQL Server Management Studio 18 以降では、クエリ チューニング アシスタントを使用して、推奨されるワークフローをユーザーに案内できます。 詳細については、「 クエリ チューニング アシスタントを使用したデータベースのアップグレード」を参照してください。