web-dev-qa-db-ja.com

dbccが失敗し、実行を続行できません...常に各dbの状態変更イベントがあります

次のエラーで失敗したジョブ DatabaseIntegrityCheck-USER_DATABASES を取得しました。

日付と時刻:2018-10-29 02:34:13コマンド:DBCC CHECKDB([データベースの1つ])WITH NO_INFOMSGS、ALL_ERRORMSGS、DATA_PURITY HResult 0x254、レベル21、状態1セッションが殺害状態。

次のエラーメッセージを含むアラートメールが届きます。

クライアントは、接続プール用にリセットされたSPID 193のセッションを再利用できませんでした。失敗IDは46です。このエラーは、以前の操作が失敗したことが原因である可能性があります。このエラーメッセージの直前に失敗した操作がないか、エラーログを確認してください。

enter image description here

プライマリサーバーで次のメッセージが表示されます。

可用性グループデータベース「すべてのデータベース」は、役割の同期のためにミラーリングセッションまたは可用性グループがフェールオーバーしたため、役割を「プライマリ」から「解決」に変更しています。これは情報メッセージです。ユーザーの操作は必要ありません。

enter image description here

セカンダリでは:

可用性グループデータベース「各データベース」は、役割の同期によりミラーリングセッションまたは可用性グループがフェイルオーバーしたため、役割を「SECONDARY」から「SECONDARY」に変更しています。これは情報メッセージです。ユーザーの操作は必要ありません。

enter image description here

このエラーの原因を特定できなかったため、sys管理の友達に報告しました。これは、ネットワークに関係していると思われるためです。

質問:これに関するエラーログには何もないので、他にどこにこの問題に関する情報がありますか?

私は実行しました sp_blitz with markdown

_EXEC sp_Blitz @OutputType = ‘markdown’, @CheckServerInfo = 1
_

そして結果は here

また、可用性グループの一部である小さなデータベース_test1_の1つで次のコマンドを実行しました。

DBCC CHECKDB ([test1]) WITH ALL_ERRORMSGS, DATA_PURITY

その結果、表示された結果 here が得られ、重要なことですが、この場合、可用性グループでフェールオーバーや状態の変更は発生しませんでした。

更新:

昨日、ジョブのスケジュールを変更しました DatabaseIntegrityCheck-USER_DATABASES を午前2時から午前3時に変更し、午前3時43分に可用性グループを混乱させました。これは、_dbcc checkdb_

enter image description here

2

私はこの動作を以前に経験しましたが、AGは「ブリップ」します。

  • pRIMARYからRESOLVINGに、そしてPRIMARYに戻る
  • sECONDARYからSECONDARY

少数の論理プロセッサ(1〜4)を備え、複数のAG(または多くのデータベースを備えたAG)を備えたシステムでは、これらの「ブリップ」の一部が避けられないことは私の理解です。特に、サーバーがVMである場合は、ネイバーが少しでも騒々しいです。

可用性グループは、多くのワーカースレッドベースラインを使用します。 AGのスレッド要件について詳しくは、こちらをご覧ください。 可用性グループによるスレッドの使用

これらのイベントが発生するリスクを減らすために、他のCPU負荷の高いスケジュールされたタスクを同時に実行しないようにすることをお勧めします。この場合、インデックスのメンテナンスがCHECKDBと同時に実行されていたようです。十分に大きなウィンドウがある場合は、これらが重ならないように広げてみてください。

0
Josh Darnell