SQL Server 2008 R2 SP2 適用後のクエリ動作について

現象

SQL Server 2008 R2 SP2 (SQL Server 2008 R2 SP1 CU2 以降) を適用後、以下の条件に当てはまるクエリが実行されたと仮定します。

-       UPDATE の WHERE句に指定した条件と同じ値を、SET句に指定している
-       UPDATE の SET句に指定された列が、インデックスのキー列に含まれている
-       UPDATE の SET句に指定された列は、外部キーとして別テーブルを参照している

この場合、SQL Server 2008 R2 SP1 以前と比較し、クエリのパフォーマンスに影響を及ぼす可能性がございます。

原因

SQL Server 2008 R2 SP1 では、クエリの実行プラン作成時、特定の条件下において、本来クエリ完了までに正しく整合性を保持するために必要となる “Table Spool (Eager Spool)”  オペレータが使用されず、誤ったクエリ結果を返すという問題がございました。

SQL Server 2008 R2 SP2 (SQL Server 2008 R2 SP1 CU2 以降) にはこの問題への対処を行うための修正が含まれております。

この修正により、本来  “Table Spool (Eager Spool)”  オペレータを追加する必要があったクエリに、正しく “Table Spool (Eager Spool)”  オペレータを追加できるようになった一方で、本オペレータが追加されることに伴い、クエリのパフォーマンスに影響を及ぼす可能性があります。

詳細

SQL Server 2008 R2 SP2 適用後のクエリ動作についてSQL Server 2008 R2 SP2 適用後のクエリ動作について

Halloween Protection (HP) についてHalloween Protection (HP) について

2499023  FIX: Incorrect results when a complex update query uses the JOIN operator in an execution plan in SQL Server 2008 or in SQL Server 2008 R2
プロパティ

文書番号:2872597 - 最終更新日: 2016/09/29 - リビジョン: 1

フィードバック