KB4057055 - 修正: SQL Server 2016 および 2017 でクラスター化列ストア インデックスに対して並列クエリを実行すると、デッドロックが発生する

適用先
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1 SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

現象

たとえば次のようなシナリオを考えてみます。

  • Microsoft SQL Server 2016 および 2017 でクエリを実行します。
  • 結果のクエリ プランには、JOIN に関連するバッチ モード ブランチと行モード ブランチが含まれます。
  • 行モード ブランチには、並列演算子とシリアル演算子があります。

このシナリオでは、デッドロック状態が発生する可能性があります。

メモ: この問題は、クエリの 最大並列処理次数 (MAXDOP) を 1 に設定した場合には発生しません。

解決策

この問題は、次の SQL Server の累積的な更新プログラムで修正されています。

SQL Server 2017 の累積的な更新プログラム CU 38

SQL Server 2016 SP1 の累積的な更新プログラム 7

注釈 この問題を解決するには、クエリ オプティマイザー修正プログラム トレース フラグ (TF) 4199 を有効にする必要があります。

クエリ オプティマイザの修正プログラムとトレース フラグの詳細については、以下を参照してください。

SQL Server クエリ オプティマイザーの修正プログラム TF 4199 サービス モデル

DBCC コンソールのコマンドとトレース フラグ

SQL Server の累積的な更新プログラムについて:

SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。

SQL Server 2017 の最新の累積的な更新プログラム

SQL Server 2016 の最新の累積的な更新プログラム

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

参考資料

マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。