Microsoft は、Microsoft SQL Server 2008 の修正プログラムを1つのダウンロード可能なファイルとして配布します。 修正プログラムは累積的であるため、新しいリリースごとに、以前の SQL Server 2008 fix のリリースに含まれていたすべての修正プログラムとセキュリティ修正プログラムが含まれています。
現象
次のような状況を想定します。
-
Microsoft SQL Server 2008 で左外部結合と共に ROW_NUMBER 関数を使用するクエリがあります。
-
クエリをサブクエリとして使用し、一意の行を返す select ステートメントを作成するには、 DISTINCT キーワードを使います。
-
この SELECT ステートメントを実行します。
このシナリオでは、間違った結果が表示されることがあります。 左外部結合が誤って無視されます。注: この問題の再現方法の詳細については、「詳細情報」の「この問題を再現する手順」を参照してください。
解決方法
累積的な更新プログラムの情報
SQL Server 2008 R2
この問題の修正プログラムは、累積的な更新プログラム6で最初にリリースされました。SQL Server 2008 R2 用の累積的な更新プログラムパッケージの入手方法の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2489376 SQL Server 2008 R2 の累積的な更新プログラムパッケージ6 注: ビルドは累積的であるため、各新しい修正プログラムには、以前の SQL Server 2008 R2 fix release に含まれていたすべての修正プログラムとセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラムを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
981356 SQL Server 2008 R2 のリリース後にリリースされた SQL Server 2008 R2 ビルド
SQL Server 2008 Service Pack 1
この問題の修正プログラムは、SQL Server 2008 Service Pack 1 の累積更新プログラム11で最初にリリースされました。この累積的な更新プログラムパッケージの詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2413738 SQL Server 2008 Service Pack 1 の累積更新プログラムパッケージ11注: ビルドは累積的であるため、それぞれの新しい修正プログラムには、以前の SQL Server 2008 fix release に含まれていたすべての修正プログラムとセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラムを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
970365 SQL Server 2008 Service Pack 1 がリリースされた後にリリースされた SQL Server 2008 ビルド Microsoft SQL Server 2008 修正プログラムは、特定の SQL Server サービスパック用に作成されます。 Sql server 2008 Service pack 1 ホットフィックスは、SQL Server 2008 Service Pack 1 のインストールに適用する必要があります。 既定では、SQL Server service pack に含まれているすべての修正プログラムは、次の SQL Server service pack に含まれています。
SQL Server 2008 Service Pack 2
この問題の修正プログラムは、SQL Server 2008 Service Pack 2 の累積更新プログラム2で最初にリリースされました。この累積的な更新プログラムパッケージの詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
2467239 SQL Server 2008 Service Pack 2 の累積的な更新プログラムパッケージ2注: ビルドは累積的であるため、それぞれの新しい修正プログラムには、以前の SQL Server 2008 fix release に含まれていたすべての修正プログラムとセキュリティ修正プログラムが含まれています。 この修正プログラムを含む最新の修正プログラムを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。
2402659 SQL Server 2008 Service Pack 2 がリリースされた後にリリースされた SQL Server 2008 ビルド Microsoft SQL Server 2008 修正プログラムは、特定の SQL Server サービスパック用に作成されます。 Sql server 2008 Service Pack 2 をインストールするには、SQL Server 2008 Service Pack 2 の修正プログラムを適用する必要があります。 既定では、SQL Server service pack に含まれているすべての修正プログラムは、次の SQL Server service pack に含まれています。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
詳細情報
この問題を再現する手順
-
次のステートメントを実行します。 これらのステートメントでは、2つのテーブルを作成し、いくつかのデータをテーブルに挿入します。
create table A (a1 int)create table B (b1 int)insert into A values(1)insert into B values(1)insert into B values(1)
-
次のステートメントを実行します。 このステートメントでは、左外部結合と共に ROW_NUMBER 関数を使用します。
select a1, row_number() over (partition by a1 order by a1) as a3from Aleft join B ON A.a1 = B.b1
-
次のステートメントを実行します。 このステートメントでは、手順2のクエリをサブクエリとして使用します。
select distinct a1, a3from ( select a1, row_number() over (partition by a1 order by a1) as a3 from A left join B ON A.a1 = B.b1) as x
注:この問題が発生した場合は、手順3のクエリによって誤った結果が返されます。
参照情報
ROW_NUMBER関数と外部結合の詳細については、次の Microsoft 開発者ネットワーク (MSDN) の web サイトを参照してください。
SQL Server の段階的サービスモデルの詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
935897 SQL Server チームが段階的なサービスモデルを利用して、報告された問題の修正プログラムを提供するSQL Server 更新プログラムの名前付けスキーマの詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
822499Microsoft SQL Server ソフトウェア更新プログラムパッケージの新しい名前付けスキーマソフトウェア更新プログラムの用語の詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を参照してください。
824684 マイクロソフトのソフトウェアの更新で使用される一般的な用語の説明