KB2413430 - 修正: SQL Server 2005、SQL Server 2008、または SQL Server 2008 R2 で ONLINE オプションを使用してインデックスを再構築すると、"バージョン レコードが見つかりません、ページが割り当てられていません" というエラー メッセージが表示される

適用先
Microsoft SQL Server 2005 Enterprise Edition SQL Server 2008 Enterprise SQL Server 2008 R2 Enterprise

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

現象

たとえば次のようなシナリオを考えてみます。

  • Microsoft SQL Server 2005、Microsoft SQL Server 2008、または Microsoft SQL Server 2008 R2 のデータベースでALLOW_SNAPSHOT_ISOLATIONオプションを有効にします。
  • テーブルに対してバージョン管理操作を実行する。 たとえば、テーブルを更新します。
  • データベースでスナップショット分離レベルを無効にします。
  • バージョン情報を含むレコードのインデックス キー列を更新する。
  • テーブル上のオンライン インデックスを再作成します。

このシナリオでは、アサーション エラーが発生し、SQL Server エラー ログに次のメッセージが表示されます。

注

<Date><Time><spid> * スタック ダンプの開始:
<Date><Time><spid> *<Date><Time><spid>
<Date><Time><spid> *
<Date><Time><spid> * 場所: AppendOnlyVerStoreMgr.cpp:731
<Date><Time><spid> * Expression: 0
<Date><Time><spid> * SPID:<spid>
<Date><Time><spid> * プロセス ID: 6328
<日付><時刻><spid> * 説明: バージョン レコードが見つからず、ページが割り当てられていません。 状態 = 3
<Date><Time><spid> *
<Date><Time><spid> * 入力バッファー 170 バイト -
<Date><Time><spid> * ALTER INDEX <Table Name> ON <Index> REBUILD WITH(O
<Date><Time><spid> * NLINE = ON)

      

原因

この問題は、インデックス キーの新しいレコードのバージョン管理情報がインデックス キーの古いレコードからコピーされるために発生します。 そのため、インデックスを再構築するときにエラーが発生します。

解決策

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

SQL Server 2008 R2

                
この問題の修正プログラムは、累積的な更新プログラム 5 で最初にリリースされました。 SQL Server 2008 R2 用のこの累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。

2438347 SQL Server 2008 R2 の累積的な更新プログラム パッケージ 5 (注: ビルドは累積的であるため、新しい修正プログラムの各リリースには、以前の SQL Server 2008 R2 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

981356 SQL Server 2008 R2 のリリース以降にリリースされた SQL Server 2008 R2 のビルド

SQL Server 2005 Service Pack 4

この問題の修正プログラムは、SQL Server 2005 Service Pack 4 の累積的な更新プログラム 1 で最初にリリースされました。 この累積的な更新プログラム パッケージの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft サポート技術情報) をクリックしてください。

2464079 SQL Server 2005 Service Pack 4 の累積的な更新プログラム パッケージ 1 注: ビルドは累積的であるため、新しい修正プログラムの各リリースには、以前の SQL Server 2005 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 マイクロソフトでは、この修正プログラムを含む最新の修正プログラム リリースを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

2485757 SQL Server 2005 Service Pack 4 以降にリリースされた SQL Server 2005 ビルドには、特定の SQL Server Service Pack 用に Microsoft SQL Server 2005 修正プログラムが作成されます。 SQL Server 2005 Service Pack 4 のインストールには SQL Server 2005 Service Pack 4 修正プログラムを適用する必要があります。 既定では、1 つの SQL Server Service Pack で提供されているすべての修正プログラムは、次の SQL Server Service Pack に含まれています。

SQL Server 2005 SP3

この問題の修正プログラムは、累積的な更新プログラム 12 で最初にリリースされました。 SQL Server 2005 SP3 用のこの累積的な更新プログラム パッケージを入手する方法の詳細については、以下のサポート技術情報番号をクリックしてください。

2345449 SQL Server 2005 Service Pack 3 用の累積的な更新プログラム パッケージ 12 注: ビルドは累積的であるため、新しくリリースされた修正プログラムには、以前の SQL Server 2005 SP3 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 この修正プログラムが含まれている最新リリースの修正の適用を検討することを推奨します。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

960598 SQL Server 2005 Service Pack 3 以降にリリースされた SQL Server 2005 ビルド

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 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 マイクロソフトでは、この修正プログラムを含む最新の修正プログラム リリースを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

970365 SQL Server 2008 Service Pack 1 以降にリリースされた SQL Server 2008 ビルドMicrosoft SQL Server 2008 修正プログラムは、特定の SQL Server Service Pack 用に作成されます。 SQL Server 2008 Service Pack 1 のインストールには、SQL Server 2008 Service Pack 1 修正プログラムを適用する必要があります。 既定では、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 更新プログラムのリリースに含まれていたすべての修正プログラムおよびセキュリティ更新プログラムが含まれています。 マイクロソフトでは、この修正プログラムを含む最新の修正プログラム リリースを適用することを検討することをお勧めします。 詳細については、次のマイクロソフト サポート技術情報番号をクリックしてください。

2402659 SQL Server 2008 Service Pack 2 SQL Server以降にリリースされた SQL Server 2008 ビルドは、特定の SQL Server Service Pack 用に作成されます。 SQL Server 2008 Service Pack 2 のインストールには、SQL Server 2008 Service Pack 2 修正プログラムを適用する必要があります。 既定では、1 つの SQL Server Service Pack で提供されているすべての修正プログラムは、次の SQL Server Service Pack に含まれています。

回避策

この問題を回避するには、クエリで ONLINE オプションを OFF に設定して、このデータベースのインデックスを再構築します。

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

参考資料

オンライン インデックス操作の詳細については、次のマイクロソフト Web サイトを参照してください。

インデックス操作に関する一般的な情報

オンライン インデックス操作の詳細については、次のマイクロソフト Web サイトを参照してください。

オンライン インデックス操作の詳細な説明