以下のエラーメッセージは、SQL Serverデータベースの1つから受信されました。
SQL Serverは、論理整合性ベースのI/Oエラーを検出しました:不正なチェックサム(予想:0x6847f47b;実際:0x15160a19)。ファイル 'C:\ XYZ.MDF'のオフセット0x000001c832e000にあるデータベースID 5のページ(1:934295)の読み取り中に発生しました。 SQL Serverエラーログまたはシステムイベントログに追加のメッセージが表示される場合があります。これはデータベースの整合性を脅かす深刻なエラー状態であり、すぐに修正する必要があります。完全なデータベース整合性チェック(DBCC CHECKDB)を実行します。このエラーは多くの要因によって引き起こされる可能性があります。詳細については、SQL Server Books Onlineを参照してください。
明らかに、破損したデータベースでDBCC CHECKDB
を実行する必要があります。それを行う前に、(データベースIDを使用して)データベース名が何であるか、エラーがどのオブジェクトに関連しているか、エラーメッセージで示されたページ番号を調べてみました。
データベース名はdistribution
で、テーブル名はMSrepl_errors
であることがわかりました。
SQL Serverのレプリケーション機能についてはあまり詳しくないので、以下の質問で誰かが私を助けてくれるとありがたいです。
問題を調査および/または修正するために、最初にDBCC CHECKDB
を実行する必要があります。ただし、CHECKDB
は、最初にデータベースをシングルユーザーモードにしないと実行できません。これは正しいですか。
distribution
データベースがエンドユーザーによって使用されないという事実に関して、それをシングルユーザーモードにする必要がありますか?そして、もしそうなら、複製ジョブにどのような影響がありますか?
ただし、最初にデータベースをシングルユーザーモードにしないと、CHECKDBを実行できません。これは正しいです?
Checkdbを実行するために、シングルユーザーである必要はありません。 DBCC CHECKDB('distribution') WITH NO_INFOMSGS, ALL_ERRORMSGS
を実行して確認できます。
現在の問題がどこにあるのかわからないため、現在のトポロジにどのような影響があるか、または影響があるかどうかを判断するのは困難です。私たちは本当にもっと知る必要があります。CHECKDB
からの出力で質問を更新してください。
ディストリビューションデータベースと見なされるシステムデータベースでは、REPAIR_ALLOW_DATA_LOSS
の実行がサポートされていないことに注意してください。実際、それは最も破壊的な状況で、そして強迫下でのみ実行されるべきです。これをシステムデータベースに対して実行することを選択すると、すぐにサポートされない構成になります。