メイン コンテンツへスキップ
サポート
Microsoft アカウントでサインイン
サインインまたはアカウントを作成してください。
こんにちは、
別のアカウントを選択してください。
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

現象

次のような状況で問題が発生します。

  • Microsoft SQL Server 2014 にパーティション分割された2つのテーブルがあり、最初のテーブルのパーティションは、同じパーティションスキームと関数を使って異なるファイルとファイルグループにマップされています。

  • これらのパーティションのいずれかを2つ目のテーブルに切り替えた後、2つ目のテーブルを切り捨てます。

  • 切り替えられたパーティションにマップされているファイルとファイルグループを削除します。

  • 2番目のテーブルで SELECT ステートメントを実行します。

このとき、次のエラー メッセージが表示されます。

Msg 606、レベル21、状態1のメタデータの不整合。 テーブル <テーブル名に指定されているファイルグループ id の> を指定します。ファイルグループ id<> は存在しません。 DBCC CHECKDB または CHECKCATALOG を実行します。

DBCC CHECKDB/CHECKTABLE を実行すると、次のエラーメッセージが表示されます。

テーブル<テーブル名>のインデックス> <インデックスを処理できません。ファイルグループ (Filegroup ID <filegroupnumber>) は無効です。

解決方法

この問題は、SQL Server の次の累積的な更新プログラムで最初に修正されました。

SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムをダウンロードしてインストールすることをお勧めします。

注: このクエリは、SQL Server 2000 以降のバージョンのすべてのインスタンスで動作します。 この修正プログラムでは、この問題が発生することはありません。 この問題が既に発生している場合は、既存のメタデータが破損することなく、新しいデータベースにデータをエクスポートします。 これを行うには、次の手順を実行します。

  1. パーティションに無効なファイルグループが含まれているかどうかを確認するには、次のクエリを実行して、結果が返されたかどうかを確認します。

    SELECT * FROM sys.allocation_units AS au WHERE au.data_space_id NOT IN (SELECT data_space_id FROM sys.filegroups)
  2. メタデータの破損を再度表示するテーブルを作成します。手順1のクエリによって結果が返された場合、破損したメタデータを持つパーティションは、テーブル内の行の表示 (select * from) をできません。 この問題を回避するには、不適切なパーティションを削除します。注:  不良パーティションは空である必要があります。 そうしないと、ファイルとそれが含まれていたファイルグループは、削除または削除されなかった可能性があります。 これを行うには、このパーティションを、同じパーティション分割スキームを使用する別のテーブルに移動します。 このテーブルは、単なる dummy テーブルにすることができます。 手順1のクエリの container_id を使用して、sys からの partition_id と一致させます。 (Partition_number を必ずメモしてください。) Partition_number を使用して、dummy テーブルに unviewable されたテーブルから ALTER TABLE SWITCH パーティションを実行します。 Dummy テーブルは、同じ列のセットを持ち、同じパーティションスキームを使用する必要があります。 不整合のあるパーティションを検索するクエリは、次のようになります。

    SELECT au.container_id, au.data_space_id, p.partition_number FROM sys.partitions AS p JOIN sys.allocation_units AS au ON p.partition_id = au.container_id LEFT JOIN sys.filegroups AS fgs ON fgs.data_space_id = au.data_space_id WHERE object_id = OBJECT_ID('MyTableName') AND fgs.data_space_id IS NULL;
  3. 以前の unviewable テーブルから新しいデータベースにデータをコピーします。

状態

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?
[送信] を押すと、Microsoft の製品とサービスの改善にフィードバックが使用されます。 IT 管理者はこのデータを収集できます。 プライバシーに関する声明。

フィードバックをいただき、ありがとうございます。

×