現象
Microsoft SQL Server 2012 または SQL Server 2014 でクエリを実行したときに、次の条件が満たされると、SQL Server 2012 で最適な実行プランが生成されます。
-
クエリには、 Case、 When、 Then、 Else の各ステートメントが含まれています。
-
If ステートメントには 、"false" に評価される定数条件があります。
-
ThenステートメントにはSelect句が含まれています。
注意事項
-
実行プランでは、 Then ステートメントが評価され、 isFalseOrNull(0) と比較されます。 ただし、 When ステートメントは常に "false" に評価されます。
-
この問題は、Microsoft SQL Server 2008 R2 では発生しません。
解決方法
この問題は、SQL Server の次の累積的な更新プログラムで最初に修正されました。
SQL Server 2014 の累積更新プログラム1 /en-us/help/2931693
SQL Server 2012 SP1 の累積更新プログラム7 /en-us/help/2894115
SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。