私たちは何十もの主要サーバーとそれに対応するミラーを持っていますが、ほとんどは正常に機能していますが、そのうちの1つは奇妙な動作をしています。具体的には、sp_dbmmonitorresults
procは特定のプリンシパルデータベースのすべての列をNULLとして返しますがsp_dbmmonitorresults
、ミラーでは有効な情報を返します。
今、私はその原因が大まかにわかっています。プリンシパルサーバーとミラーサーバーがセットアップされたとき、プライマリの地域設定が正しくなかった(時刻は正しかったが、+ 4地域(アメリカなど)を使用していた)場合、ミラーリングが設定された後、時間地域はGMT +0に修正されました(学校少年のエラーは知っていますが、c'est la vie!)
編集:19/12/2012
今日、私はミラーリングを削除し、ミラー上のコピーを削除し、ミラーリングを再セットアップしましたが、これは問題を解決しませんでした!私はこの質問に賞金を払って、この問題の根底に到達しようとしています。
確認のため、EXEC sp_dbmmonitorresults @database_name = 'ProScript'
各サーバーで手動で実行すると、プライマリのほとんどの値にNULLが返されますが、ミラーでは正常に返されます。
プライマリで実行した場合:
ズーム:クリックしてフルサイズバージョン
鏡で走ったとき:
ズーム:クリックしてフルサイズバージョン
ご覧のとおり、時刻は現在でデータベースは同期していますが、log_generation_rate、unsent_log、send_rateなどはすべてプライマリでNULLになっていますか?
両方のサーバーは、exec sys.sp_dbmmonitorupdate
ジョブステップなどとして毎分実行されている監視ジョブを持っています。
sys.sp_dbmmonitorupdateのソースを確認すると、これらの値が取得されます。sys.dm_os_performance_counters
したがって、ミラーで次のコマンドを実行すると、
SELECT counter_name ,
cntr_value
FROM sys.dm_os_performance_counters
WHERE instance_name = 'ProScript'
AND counter_name IN ( N'Log Send Queue KB', N'Log Bytes Sent/sec', N'Redo Queue KB', N'Redo Bytes/sec', N'Transaction Delay', N'Log Bytes Flushed/sec', N'Transactions/sec' )
私は良い結果を得ます:
ただし、プライマリで同じSQLを実行すると、行がありません!
これはsys.dm_os_performance_counters
、ミラーリングのためにテーブルにデータが入力されていないことを示唆していますか?何が原因でしょうか?