現象
たとえば次のようなシナリオを考えてみます。
- 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 サービス モデル
SQL Server の累積的な更新プログラムについて:
SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。
SQL Server 2017 の最新の累積的な更新プログラム
SQL Server 2016 の最新の累積的な更新プログラム
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。
参考資料
マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。