重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

SQL Serverの保守計画について質問です。
真夜中に保守計画を動かしているシステムがあるのですが、
以下のようなエラーが発生しました。


クエリ "DBCC CHECKDB WITH NO_INFOMSGS" の実行が次のエラーで失敗しました:
"オブジェクト ID 321578567、インデックス ID 0、パーティション ID 72057597094199296、
アロケーション ユニット ID 72057597100556288 (型 In-row data) のページ (1:734549) の
PFS 空き領域情報が不適切です。予想値 0_PCT_FULL、実際の値 95_PCT_FULL。
CHECKDB により、テーブル 'D出庫予定データ' (オブジェクト ID 321578567) に 0 個のアロケーション
エラーと 1 個の一貫性エラーが見つかりました。
CHECKDB により、データベース 'AAAdb' に 0 個のアロケーション エラーと 1 個の一貫性エラーが見つかりました。
repair_allow_data_loss は DBCC CHECKDB (AAAdb) で見つかったエラーの最小修復レベルです。"。
考えられるエラーの理由: クエリに問題がある、"ResultSet" プロパティが正しく設定されていない、
パラメータが正しく設定されていない、または接続が正しく確立されていない。


整合性チェックでエラーが出ているのは分かるのですが、
具体的な解決策がよく分かりません。
何かアドバイスがいただければ、嬉しいです。

A 回答 (3件)

PFSはGAMやSGAMと同じくシステムの内部情報ですので、通常意図的にこのような不整合を生じさせることはできないはず。



ちなみにSQL Server 2005のSPはいくつですか?
以下のサイトによれば、SQL Server 2005 SP2までにはPFSのバグらしきものがあったようです。
http://www.sqlskills.com/BLOGS/PAUL/post/Corrupt …
直接関係あるかはわかりませんが、この内容だと主にBULK処理の場合に発生する可能性がありそうですね。
    • good
    • 0
この回答へのお礼

なるほど!

ちなみにSPは当たってないというひどい状態でした。

ってことで、最新のSPを当てることにしました。

わざわざありがとうございました。
本当に助かりました!

お礼日時:2009/11/09 09:43

DBCC CHECKDBには修復オプションがあります。


保守計画ということはSQL Server2000ですよね。
http://technet.microsoft.com/ja-jp/library/aa258 …

1) DBCC CHECKDB (AAAdb,REPAIR_FAST)
2) DBCC CHECKDB (AAAdb,REPAIR_REBUILD)
3) DBCC CHECKDB (AAAdb,REPAIR_ALLOW_DATA_LOSS)
今回のメッセージでは"repair_allow_data_loss は DBCC CHECKDB (AAAdb) で見つかったエラーの最小修復レベルです"と出ているので、3)でないと直らないかもしれませんが、1)2)はデータロストの可能性はないのに対し、3)は不整合データをページレベルで削除して整合性を確保するため、データロストの可能性があります。

したがって、既にアドバイスがあるように可能ならばリストアが無難です。
ただ、今回のケースでは'D出庫予定データ'に不整合があると判明しているため、正しいバックアップがない場合は修復を実行して、データロストをチェックするというアプローチもありかもしれません。

なお、修復オプションはデータベースをシングルユーザモードに変更してからでないと実行できません。
ALTER DATABASE AAAdb SET SINGLE_USER
GO
(修復)
ALTER DATABASE AAAdb SET MULTI_USER
GO
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。

SQL Serverは2005です。
データは不整合だった分は、確かにバッサリ
削除されてました。

御回答いただいた方法で一度、修復をしてみます。

ただ、このような不整合が起きる根本原因って
どんなことが考えられるでしょうか?

今回のエラーが出たテーブルは、
毎日数万件のデータを作成し、更新し、
1日の終わりの締め処理でテーブルを空っぽにするような
テーブルなんです。

そのようなテーブルは他にもあるんですが、
同じようなテーブルは、このエラーがたまに発生します。

お礼日時:2009/11/08 00:07

「空き領域情報が不適切です」というのがあるので、


まずはディスクの空きが十分にあるか。およびデータファイルの空きが十分か(自動拡張が設定されてればこのエラーに関しては気にしなくていいかも)を確認かも。

で、一番無難なのが、多分データベースを一度バックアップとって復元すること。領域関連のエラーっぽいので、バックアップ→復元で作り直せば戻せそう。
その場合、念のために一度サービスを落とすかでタッチするかして、MDF、LDFのファイルをコピーしておいたほうがいいかも知れません。
    • good
    • 0
この回答へのお礼

御回答ありがとうございます。

このPFS 空き領域情報というのがSQL Server上の
どこを見れば分かるのかを理解してないので、
エラー原因がつかめない状況です。
できれば、エラー原因を知りたいです。

ちなみにSQL Serverは2005です。

一応、解決策としては、復元もしくは、
該当のテーブルをDrop→Createをしようと
思っています。

お礼日時:2009/11/08 00:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!