Windows エラー ログに表示された内容は次のとおりです。
SQL Server は、論理的な一貫性ベースの I/O エラーを検出しました: チェックサムが正しくありません (予想: 0x19fedd20、実際: 0x19fed5e3)。これは、ファイル 'D:\mssql\local_repository_pbdiffimport.mdf' のオフセット 0x00000000dc8000 にあるデータベース ID 6 のページ (1:1764) の読み取り中に発生しました。SQL Server エラー ログまたはシステム イベント ログ内の追加メッセージに、より詳しい情報が記載されている場合があります。これは、データベースの整合性を脅かす重大なエラー状態であり、すぐに修正する必要があります。完全なデータベース整合性チェック (DBCC CHECKDB) を実行してください。このエラーは、さまざまな要因によって発生する可能性があります。詳細については、SQL Server Books Online を参照してください。
私は走った
dbcc チェックdb
REPAIR_ALLOW_DATA_LOSSオプションで復元する必要があると表示されたので、最終的に実行しました。
DBCC CHECKDB (my_db_name、REPAIR_ALLOW_DATA_LOSS) NO_INFOMSGS あり
しかし、その結果、約 2,000 行が失われました。バックアップを復元しましたが、約 2 週間前に同じデータベースで一貫性の問題が発生していたため、再び同じ問題が発生するのではないかと心配しています。その後、インデックスで問題が発生しました (インデックスを再作成すると問題は解決しました)。
ディスクを調査したところ、RAID5 は正常で、エラーはなく、ディスク チェック ユーティリティでもハードウェアの問題は検出されませんでした。
これは OS (Windows Server 2003) または MSSQL (MSSQL Server 2005) によって発生するのでしょうか?
答え1
一貫性の問題は、ハードウェアまたはソフトウェアのいずれかの要因によって発生する可能性があります。SQL ログを調べて、問題の原因を調査してください。
私の提案:
- データベース オプションの Page_Verify が CHECKSUM に設定されていることを確認します。これにより、すべての書き込みが書き込み前に検証されます。これは SQL Server 2005 の既定の設定です。
- 毎日または1日に複数回バックアップ(必要に応じて)
- メンテナンスプランを設定して、データベースの一貫性を毎日チェックします。
- Windows Server と Sql Server をパッチやサードパーティのソフトウェアで最新の状態に保ってください。
- 読む "効果的なデータベースメンテナンスのためのヒント「私の提案のほとんどをより詳細に説明しているからです。」
この記事は、データベース サーバーの管理方法を知らないシステム管理者を支援するために書かれたものなので、強くお勧めします。
答え2
システム イベント ログにハードウェア イベントが報告されている可能性がありますので、調査する必要があります。
SQLIOSIM を実行して、ディスクに 24 時間以上負荷をかけます。SQLIOSIM がエラーを報告した場合は、ハードウェア ベンダーに問い合わせて調査する必要があります。ディスク、RAID アレイ、ドライバーのいずれかに原因がある可能性があります。OS と SQL が原因である可能性は最も低いです。
見るSQLIOSim ユーティリティを使用してディスク サブシステム上の SQL Server アクティビティをシミュレートする方法。
答え3
間違いなく SQL Server の問題ではありません (まあ、非常に非常に可能性が低いですが)。また、OS の問題である可能性もあまりありません。これは、単に、不適切な書き込みがあまりにも明白であるため、エラーとして長く残ることはないからです。
これはハードウェアの問題である可能性を強く示唆しています。RAM (ECC を使用していますか?) が原因の可能性があります。また、その他の関連する問題 (RAID コントローラー? ディスク?) も原因の可能性があります。