Microsoft は、Microsoft SQL Server 2008 の修正プログラムを1つのダウンロード可能なファイルとして配布します。 修正プログラムは累積的であるため、新しいリリースごとに、以前の SQL Server 2008 fix のリリースに含まれていたすべての修正プログラムとセキュリティ修正プログラムが含まれています。
現象
次のような状況で問題が発生します。
-
Microsoft SQL Server 2008 で row_number 関数を使用する並列クエリを実行します。
-
SELECTステートメントまたはデータ操作言語 (DML) ステートメントの内部にあるサブクエリを使用してクエリを実行しようとしている。
このシナリオでは、次のいずれかの問題が発生します。
-
SELECTステートメント内で何度もクエリを実行した場合、正しくない結果が返されます。
-
クエリが DML ステートメント内で実行されている場合、テーブルに間違ったデータが含まれている可能性があります。 テーブルに制約が含まれている場合、ステートメントが制約違反で失敗する可能性があります。たとえば、テーブルに主キーが設定されている場合、 INSERT ステートメントは失敗し、主キー違反エラーが発生する可能性があります。
注: これらの問題は、次のいずれかの状況で発生する可能性があります。
-
MAXDOPクエリヒントオプションを2より大きい値に設定します。
-
[ 並列処理の最大限度 ] オプションを [サーバー構成] で 2 より大きい値に設定します。
解決方法
この問題を解決するには、SQL Server 2008 の最新の service pack を入手してください。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
968382 SQL Server 2008 の最新の Service Pack を入手する方法
回避策
この問題を回避するには、以下のいずれかの方法を使用します。
-
以下の更新プログラムのいずれかを適用した場合は、4134トレースフラグを有効にします。
-
Sql server 2008 の累積的な更新プログラムパッケージ6または SQL Server 2008 の累積的な更新プログラムパッケージ
-
Sql server 2008 Service Pack 1 (SP1) または SQL Server 2008 SP1 の累積的な更新プログラムパッケージの累積更新プログラムパッケージ2
トレースフラグを有効にする方法の詳細については、次の MSDN web サイトを参照してください。
-
-
Microsoft サポート技術情報の記事970198の「回避策」セクションを参照してください。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
970198 修正: SQL Server 2008 で row_number 関数を使用するクエリを実行すると、誤った結果が表示される