[FIX] SQL Server 2008 で ORDER BY 句を使用したビューを使用してクエリを実行しても結果がランダムな順序で返される

文書翻訳 文書翻訳
文書番号: 926292 - 対象製品

SQL Server 2008

マイクロソフトでは、Microsoft SQL Server 2008 の修正を 1 つのダウンロード可能なファイルとして配布しています。 修正は累積的であるため、新しいリリースの修正には、以前のリリースの SQL Server 2008 の修正に含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれます。

SQL Server 2005

マイクロソフトでは、Microsoft SQL Server 2005 の修正を 1 つのダウンロード可能なファイルとして配布しています。 修正は累積的であるため、新しいリリースの修正には、以前のリリースの SQL Server 2005 の修正に含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれます。
SQL Server のリリース後にリリースされたビルドのマスタ一覧を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
957826 SQL Server 2008 以降にリリースされた SQL Server 2008 のビルド、および SQL Server 2005 Service Pack 2 以降にリリースされた SQL Server 2005 のビルドに関する詳細情報の入手先
すべて展開する | すべて折りたたむ

目次

この資料では、この修正プログラムのリリースに関する以下の情報について説明します。
  • この修正プログラム パッケージで修正される問題
  • この修正プログラム パッケージを適用するための必要条件
  • この修正プログラム パッケージの適用後にコンピュータを再起動する必要があるかどうか
  • この修正プログラム パッケージが他の修正プログラム パッケージによって置き換えられるかどうか
  • この修正プログラム パッケージの適用後にレジストリを変更する必要があるかどうか
  • この修正プログラム パッケージに含まれるファイル

現象

SQL Server 2005 または SQL Server 2008 のデータベースにおけるビューの定義で、SELECT ステートメントが次の要件を満たしているとします。
  • SELECT ステートメントに TOP (100) PERCENT 式が使用されている。
  • SELECT ステートメントに ORDER BY 句が使用されている。
このビューを介してクエリを実行すると、結果がランダムな順序で返されます。

この動作は、Microsoft SQL Server 2000 の場合とは異なります。SQL Server 2000 では、ORDER BY 句で指定された順序で結果が返されます。

SQL Server 2008

この問題に対する修正は、累積的な更新プログラム パッケージ 1 で最初にリリースされました。 SQL Server 2008 の累積的な更新プログラム パッケージの入手方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
956717 SQL Server 2008 の累積的な更新プログラム パッケージ 1 について
: ビルドは累積的であるため、新しいリリースの修正には、以前のリリースの SQL Server 2008 の修正に含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれます。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
956909 SQL Server 2008 のリリース以降にリリースされた SQL Server 2008 のビルドについて

SQL Server 2005

この修正プログラムには、2 つのバージョンが存在します。 リリース バージョンの SQL Server 2005 に適用するバージョンと SQL Server 2005 Service Pack 2 (SP2) に適用するバージョンが用意されています。 リリース バージョンの SQL Server 2005 を実行している場合は、この資料に記載されている修正プログラム (ビルド 1554) を適用します。 SQL Server 2005 SP2 を実行している場合は、SQL Server 2005 SP2 の累積的な更新プログラム パッケージ 2 (ビルド 3175) を適用します。 SQL Server 2005 Service Pack 1 (SP1) を実行している場合は、SQL Server 2005 SP2 をインストールした後、SQL Server 2005 SP2 の累積的な更新プログラム パッケージ 2 (ビルド 3175) を適用します。 SQL Server 2005 SP2 の累積的な更新プログラム パッケージ 2 (ビルド 3175) に関する説明は、「サポート技術情報」 (Microsoft Knowledge Base) の資料 936305 に記載されています。 関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
936305 SQL Server 2005 Service Pack 2 の累積的な更新プログラム パッケージ 2 について

修正プログラムの情報

マイクロソフトでは、修正プログラムを提供中ですが、 この修正プログラムはこの資料に記載された問題のみを修正することを目的としており、 障害があったコンピュータに対してのみ適用することを推奨します。

修正プログラムをダウンロードできる場合は、この「サポート技術情報」 (Microsoft Knowledge Base) の上部に "修正プログラムのダウンロード" セクションが表示されています。 このセクションが表示されていない場合は、マイクロソフト カスタマー サービス & サポートにリクエストを送信し、修正プログラムを入手します。

: 他の問題が発生した場合、またはトラブルシューティングが必要な場合には、別のサービス リクエストを作成することが必要になることがあります。 特定の修正プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。 マイクロソフト カスタマー サービス & サポートの電話番号一覧を参照する、または別のサービス リクエストを作成するには、次のマイクロソフト Web サイトを参照してください。
http://support.microsoft.com/contactus/?ws=support
: "修正プログラムのダウンロード" セクションは、修正プログラムが提供されている言語で表示されます。 使用している言語で表示されない場合、その言語では修正プログラムは提供されていません。

必要条件

この修正プログラムを適用するには、リリース バージョンの SQL Server 2005 がインストールされている必要があります。

再起動に関する情報

この修正プログラムの適用後に SQL Server サービスを再起動する必要があります。

レジストリ情報

この修正プログラムの適用後にレジストリを変更する必要はありません。

修正プログラム適用後の操作

この修正プログラムでは、トレース フラグ 168 が導入されます。この修正プログラムを適用した後、トレース フラグ 168 を有効にする必要があります。SQL Server 2005 でトレース フラグを有効にする方法については、次の MSDN (Microsoft Developer Network) Web サイトの「解説」を参照してください。
http://msdn2.microsoft.com/ja-jp/library/ms188396.aspx
また、ビューが含まれるデータベースの互換性レベルを 80 に変更する必要があります。

互換性レベルを変更するには、以下の手順を実行します。
  1. SQL Server Management Studio を開き、SQL Server 2005 のインスタンスに接続します。
  2. ビューが含まれるデータベースを右クリックし、[プロパティ] をクリックします。
  3. [ページの選択] ウィンドウで、[オプション] をクリックします。
  4. [互換性レベル] ボックスの一覧から [SQL Server 2000 (80)] を選択します。
: トレース フラグ 168 の設定は、データベースを SQL Server 2005 に移行する前に行う必要があります。データベースの移行後にトレース フラグ 168 を設定しても、クエリ結果は並べ替えられないままです。

修正プログラムのファイル情報

この修正プログラムには、この資料に記載されている問題を修正するために必要なファイルのみが含まれています。 この修正プログラムには、製品を最新のビルドに更新するために必要なファイルがすべて含まれているとは限りません。

修正プログラム (英語版) のファイル属性は次表のとおりです。ただし、これより新しい修正プログラムがリリースされている可能性もあります。 各ファイルの日付および時刻は、世界協定時刻 (UTC) で示されています。 ファイル情報に表示される時刻は、ローカル時刻に変換されています。 UTC とローカル時刻との時差を確認するには、コントロール パネルの [日付と時刻] の [タイム ゾーンの変更] を使用してください。
元に戻す全体を表示する
ファイル名バージョンサイズ日付時刻プラットフォーム
Logread.exe2005.90.1554.0397,08804-Oct-200616:06x86
Microsoft.sqlserver.replication.dll2005.90.1554.01,608,48004-Oct-200616:06x86
Microsoft.sqlserver.smo.dll9.0.1554.01,559,32804-Oct-200616:06x86
Microsoft.sqlserver.sqlenum.dll9.0.1554.0895,77604-Oct-200616:06x86
Msmdlocal.dll9.0.1554.015,626,52804-Oct-200616:08x86
Msmdredir.dll9.0.1554.03,929,88804-Oct-200616:08x86
Osql.exe2005.90.1554.051,48804-Oct-200616:04x86
Replrec.dll2005.90.1554.0781,08804-Oct-200616:06x86
Sqlaccess.dll2005.90.1554.0349,47204-Oct-200616:06x86
Sqldiag.exe2005.90.1554.0960,28804-Oct-200616:06x86
Sqlservr.exe2005.90.1554.028,791,64004-Oct-200616:08x86

状況

この動作は仕様です。 SQL Server の今後のリリースでも SQL Server 2005 と同様に動作します。

SQL Server 2008

変更されるファイル、およびこの「サポート技術情報」 (Microsoft Knowledge Base) の資料に記載されている修正プログラムが含まれる累積的な更新プログラム パッケージを適用するための必要条件を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
956717 SQL Server 2008 の累積的な更新プログラム パッケージ 1 について

SQL Server 2005

アプリケーションを SQL Server 2000 から SQL Server 2005 に移行する前に、この修正プログラムを SQL Server 2005 に適用した場合、アプリケーションは SQL Server 2005 と連携するようになります。たとえば、特定のソート順でデータを取得できます。 これを行うには、ビューを介したクエリに使用している SELECT ステートメントに ORDER BY 句を使用する必要があります。 この修正プログラムを適用した後、アプリケーションを移行すると、クエリ結果は並べ替えられます。

ただし、この修正プログラムは一時的な解決方法です。 アプリケーションを移行した後、SQL Server 2005 の新しい動作と正しく連携するようにアプリケーションを更新する必要があります。

アプリケーションを更新した後は、トレース フラグ 168 を無効にして、データベースの互換性レベルを 90 に戻します。

関連情報

SQL Server 2008 以降にリリースされたビルドの一覧を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
956909 SQL Server 2008 のリリース以降にリリースされた SQL Server 2008 のビルドについて
SQL Server の増分サービス モデル (ISM) の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
935897 報告された問題に対する修正プログラムを提供する SQL Server チームの増分サービス モデル (ISM) について
SQL Server の更新プログラムの命名方式の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
822499 Microsoft SQL Server ソフトウェア更新プログラム パッケージの新しい命名方式
ソフトウェア更新プログラムに関する用語の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
824684 マイクロソフトのソフトウェアの更新で使用される一般的な用語の説明
SQL Server 2005 におけるデータベースの互換性レベルの詳細については、次の MSDN Web サイトを参照してください。
http://msdn2.microsoft.com/ja-jp/library/ms178653.aspx
SQL Server 2005 のサーバー スタートアップ オプションの構成方法については、次の MSDN Web サイトを参照してください。
http://msdn2.microsoft.com/ja-jp/library/ms345416.aspx
SQL Server サービスのスタートアップ オプションの構成方法については、次の MSDN Web サイトを参照してください。
http://msdn2.microsoft.com/ja-jp/library/ms190737.aspx

プロパティ

文書番号: 926292 - 最終更新日: 2009年4月30日 - リビジョン: 5.1
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
キーワード:?
kbautohotfix kbhotfixserver kbfix kbexpertiseadvanced kbqfe kbpubtypekc KB926292
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com