web-dev-qa-db-ja.com

SQL Serverエラー8928を修正するにはどうすればよいですか?

データベースの1つに対して実行されているアプリケーションで次のエラーメッセージが表示されました。

SQL Server detected a logical consistency-based I/O error: incorrect checksum 
(expected: 0xfdff74c9; actual: 0xfdff74cb). It occurred during a read of page (1:69965) in 
database ID 5 at offset 0x0000002229a000 in file 'e:\SQL Server\MSSQL.1\MSSQL
\[DB_Name].mdf'. Additional messages in the SQL Server error log or system event log may 
provide more detail. 
    This is a severe error condition that threatens database integrity and must be 
corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This 
error can be caused by many factors; for more information, see SQL Server Books Online.

それは悪く聞こえたので、私は以下を実行しました:

DBCC CHECKDB ([DB_Name]) WITH NO_INFOMSGS, ALL_ERRORMSGS

そして、次のレポートを受け取りました:

Msg 8928, Level 16, State 1, Line 1
Object ID 1326627769, index ID 1, partition ID 72057594048872448, alloc unit ID 
    72057594055557120 (type LOB data): Page (1:69965) could not be processed. See other 
    errors for details.
Msg 8939, Level 16, State 98, Line 1
Table error: Object ID 1326627769, index ID 1, partition ID 72057594048872448, alloc 
    unit ID 72057594055557120 (type LOB data), page (1:69965). Test (IS_OFF (BUF_IOERR, 
    pBUF->bstat)) failed. Values are 12716041 and -4.
Msg 8965, Level 16, State 1, Line 1
Table error: Object ID 1326627769, index ID 1, partition ID 72057594048872448, alloc 
    unit ID 72057594055557120 (type LOB data). The off-row data node at page (1:69965), 
    slot 0, text ID 89622642688 is referenced by page (1:69968), slot 1, but was not 
    seen in the scan.
Msg 8929, Level 16, State 1, Line 1
Object ID 1326627769, index ID 1, partition ID 72057594048872448, alloc unit ID 
    72057594055622656 (type In-row data): Errors found in off-row data with ID 
    89622642688 owned by data record identified by RID = (1:77754:1)
CHECKDB found 0 allocation errors and 4 consistency errors in table '[Table_Name]' 
    (object ID 1326627769).
CHECKDB found 0 allocation errors and 4 consistency errors in database '[DB_Name]'.
repair_allow_data_loss is the minimum repair level for the errors found by DBCC CHECKDB 
    ([DB_Name]).

古い画像を確認しましたが、かなり前からエラーが発生しているようです。きれいな画像がありません。私はあまりDBAではないので、最善の方法がわかりません。エラーメッセージがどのようにしてデータの破損を示しているのかもわかりません。

これらのメッセージが何を示し、どのように進むかを誰かに教えてもらえますか?

2
Enrique

メッセージ8928、レベル16、状態1、行1オブジェクトID 1326627769、インデックスID 1、パーティションID 72057594048872448、割り当てユニットID 72057594055557120(タイプLOBデータ):ページ(1:69965)

SQL Serverデータベースの列に破損があり、LOBであり、VRCHARデータ型である可能性があります。インデックスID 1はクラスター化インデックスに問題があることを示していたので、最小のrepiarオプションの修復でデータが失われると、データが削除されてデータベースが回復すると思われます。インデックスを削除して再作成しても効果はありません。最初に修復を実行しないでください。 SQLサーバーデータベースの最新の有効なバックアップはありますか?ここで考えられる最善の解決策は、有効なバックアップから復元することです。

データベースの大きさ。バックアップを復元する前に restore verifyonly を実行して、復元しているバックアップに一貫性があることを確認してください。復元のみで、バックアップが完全であり、すべての形式で有効であることを保証します。

SQL ServerのエラーログとWindowsのイベントビューアを読んで、破損が発生した理由を確認し、修正するための手順を実行してください。

有効なバックアップがない場合は、以下のコマンドを使用してデータベースを修復することもできます

ALTER DATABASE DB_NAME SET SINGLE_USER; 
GO 
DBCC CHECKDB (N'DB_NAME', REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS;
GO 
2
Shanky