[FIX] SQL Server 2008 でテーブルの圧縮を推定するとエラー メッセージ "サブクエリは複数の値を返しました" が表示される

Bug # : 50003626 (SQL Hotfix)
マイクロソフトでは、Microsoft SQL Server 2008 の修正を 1 つのダウンロード可能なファイルとして配布しています。 修正は累積的であるため、新しいリリースの修正には、以前のリリースの SQL Server 2008 の修正に含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれます。
現象
Microsoft SQL Server 2008 で非クラスタ化主キーと 1 つ以上の非クラスタ化インデックスの両方を持つテーブルに対して sp_estimate_data_compression_savings ストアド プロシージャを使用すると、以下のエラー メッセージが表示されることがあります。
メッセージ 512、レベル 16、状態 1、プロシージャ sp_estimate_data_compression_savings、行 251
サブクエリは複数の値を返しました。 サブクエリが =、!=、<、<=、>、>= の後に続く場合や、サブクエリが 1 つの式として使われる場合は複数の値は許可されません。
エラー メッセージが表示されますが、結果は返されます。 ただし、一部の非クラスタ化インデックスに対する圧縮推定値は正しくありません。

この問題は、クラスタ化インデックスが存在するかどうかに関係なく発生します。
解決方法

Service Pack の情報

この問題を解決するには、SQL Server 2008 の最新の Service Pack を入手します。関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
968382 SQL Server 2008 の最新の Service Pack を入手する方法

累積的な更新プログラムの情報

この問題に対する修正は、累積的な更新プログラム パッケージ 2 で最初にリリースされました。この SQL Server 2008 の累積的な更新プログラム パッケージの入手方法の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
958186 SQL Server 2008 の累積的な更新プログラム パッケージ 2 について
: ビルドは累積的であるため、新しくリリースされたパッケージには、それ以前の SQL Server 2008 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
956909 SQL Server 2008 のリリース以降にリリースされた SQL Server 2008 のビルドについて
回避策
この問題を回避するには、sp_estimate_data_compression_savings ストアド プロシージャを実行する際に @index_id パラメータを指定します。 推定する各インデックスで 1 回ずつ、このストアド プロシージャを実行する必要があります。
状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。 この問題は SQL Server 2008 Service Pack 1 で最初に修正されました。
詳細
sp_estimate_data_compression_savings ストアド プロシージャは、テーブルの現在のサイズを返すために使用されます。 sp_estimate_data_compression_savings ストアド プロシージャは、要求された圧縮状態でのテーブル サイズを推定するためにも使用されます。

問題の再現手順

  1. SQL Server Management Studio を起動して、SQL Server 2008 のインスタンスに接続します。
  2. 新しいクエリを作成して、次のステートメントを実行します。
    CREATE DATABASE TESTGOUSE TestGOCREATE TABLE REPRO(i int primary key nonclustered, a int)GOCREATE NONCLUSTERED INDEX NONCLUSTERED_REPRO ON REPRO(a)GOEXEC SP_ESTIMATE_DATA_COMPRESSION_SAVINGS @schema_name = 'dbo', @object_name = 'repro', @index_id = NULL, @partition_number = NULL, @data_compression = 'PAGE'
変更されるファイル、およびこの「サポート技術情報」 (Microsoft Knowledge Base) の資料に記載されている修正プログラムが含まれる累積的な更新プログラム パッケージを適用するための必要条件の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
958186 SQL Server 2008 の累積的な更新プログラム パッケージ 2 について
関連情報
SQL Server 2008 以降にリリースされたビルドの一覧を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
956909 SQL Server 2008 のリリース以降にリリースされた SQL Server 2008 のビルドについて
SQL Server の増分サービス モデルの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
935897 報告された問題に対する修正プログラムを提供する SQL Server チームの増分サービス モデル (ISM) について
SQL Server の更新プログラムの命名方式の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
822499Microsoft SQL Server ソフトウェア更新プログラム パッケージの新しい命名方式
ソフトウェア更新プログラムに関する用語の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
824684 マイクロソフトのソフトウェアの更新で使用される一般的な用語の説明
SQL2008RelNoteDatabaseEngine
プロパティ

文書番号:956031 - 最終更新日: 06/24/2009 09:20:55 - リビジョン: 3.0

Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Standard

  • sql2008relnotedatabaseengine sql2008relnote kbbug kbqfe kbfix kbexpertiseadvanced kbprb KB956031
フィードバック