現象
次のような状況で問題が発生します。
-
Microsoft SQL Server 2016 では、SQL Server 2016 クエリプロセッサ機能を使用するクエリを実行します。 たとえば、バッチモードで並べ替え演算子を実行します。
-
同じ並べ替え演算子を行モードで実行する場合と比較すると、クエリパフォーマンスの低下が発生します。
-
この問題を解決するには、セッションレベルでトレースフラグ9347を有効にするか、QUERYTRACEON を使用します。 これを行うと、バッチモードの並べ替えが無効になります。
このシナリオでは、並べ替え演算子はバッチモードで実行されたままで、セッションレベルまたはクエリレベルのトレースフラグを無視します。
解決方法
SQL Server 2016 では、トレースフラグ9347を使用して、バッチモードで実行せずに並べ替え演算子を行モードで実行するように強制できます。 SQL Server 2016 の累積更新プログラム 1を適用すると、セッションレベルまたはクエリレベルでトレースフラグ9347を正常に有効にすることができます。 このトレースフラグは、サーバーレベル、セッションレベル、またはクエリレベルでグローバルに有効にすることもできます。 注: トレースフラグを間違って使用すると、ワークロードのパフォーマンスが低下する可能性があります。 詳細については、次の Microsoft サポート技術情報の記事の「概要」セクションを参照してください。 2801413 では、特定のクエリレベルでさまざまなトレースフラグによって制御できる SQL Server クエリオプティマイザーの動作に影響します。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
関連情報
ソフトウェアの更新を説明するために Microsoft が使用する 用語 について説明します。