[FIX] CREATE UNIQUE CLUSTERED INDEX ... WITH DROP_EXISTING クエリで非クラスタ化インデックスを再構築する

文書翻訳 文書翻訳
文書番号: 304519 - 対象製品
この記事は、以前は次の ID で公開されていました: JP304519
すべて展開する | すべて折りたたむ

現象

一意なクラスタ化インデックスに対して次の構文のいずれかを使用します。
 CREATE UNIQUE CLUSTERED INDEX ... WITH DROP_EXISTING
または
DBCC DBREINDEX(table_name, clustered_index_name)
その結果、クラスタ化インデックスと非クラスタ化インデックスが両方とも再構築されます。

SQL Server 7.0 では、クラスタ化インデックスのみが再構築されます。SQL Server 2000 では、両方の種類のインデックスが再構築されるので、SQL Server 2000 での操作は SQL Server 7.0 での操作より時間がかかります。

解決方法

この問題を解決するために、SQL Server 2000 の最新の Service Pack の適用をお願いいたします。
最新の SQL Server サービスパックのダウンロードおよびインストールについて詳しくは以下をご覧下さい。
http://www.microsoft.com/japan/sql/download/default.asp (日本語版)
http://www.microsoft.com/sql/downloads/default.htm (英語版)

回避策

この問題を回避するには、SQL Server 2000 で導入された新しい DBCC INDEXDEFRAG コマンドの使用を検討します。DBCC INDEXDEFRAG はシステムがオンライン中も使用できます。ただし、DBCC INDEXDEFRAG はリーフ レベルのインデックスを連続的に並び替える処理に関しては、クラスタ化インデックスの再作成するときほど効果的ではない場合があります。

状況

弊社では、これを Microsoft SQL Server version 2000 の問題として確認しています。
この問題は、Microsoft SQL Server version 2000 Service Pack 2 で修正されています。

詳細

クラスタ化インデックスを含むテーブルでは、非クラスタ化インデックスのキーには行ロケータとしてクラスタ化キー、またはブックマークが含まれています。一意なクラスタ化インデックスでは、クラスタ化インデックスの再構築によってインデックス キーが変更されないため、非クラスタ化インデックスのキーは変更されません。結果として、非クラスタ化インデックスのエントリについては、クラスタ化インデックスを使った再構築は不要になります。

最初にクラスタ化インデックスが一意なインデックスとして作成されなかった場合、SQL Server は、内部で各インデックス キーの最後に一意な 4 バイトの値を追加します。各非クラスタ化インデックスの行に一意なクラスタ化インデックスのキーが含まれるように、一意な 4 バイトの値が要求されます。一意でないクラスタ化インデックスでは、インデックスの再構築中に、インデックス キーの最後のこの 4 バイトの値が変更されることがあります。このため、すべての非クラスタ化インデックスのキーも再構築する必要があります。ユーザーがクラスタ化インデックスが一意であると指定していない場合の本来の動作は、インデックスの再作成中にすべてのインデックスを再構築することです。

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 304519 (最終更新日 2001-12-10) をもとに作成したものです。

プロパティ

文書番号: 304519 - 最終更新日: 2003年11月11日 - リビジョン: 2.1
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2000 Standard Edition
キーワード:?
kbbug kbfix kbsqlserv2000presp2fix KB304519
"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