ミラーログはプライマリでは空ですが、ミラーでは問題ありません


8

私たちは何十もの主要サーバーとそれに対応するミラーを持っていますが、ほとんどは正常に機能していますが、そのうちの1つは奇妙な動作をしています。具体的には、sp_dbmmonitorresultsprocは特定のプリンシパルデータベースのすべての列を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、ミラーリングのためにテーブルにデータが入力されていないことを示唆していますか?何が原因でしょうか?

回答:


5

まあ、それは数ヶ月かかったが、私は最終的に問題を見つけた!

sys.dm_os_performance_countersは、プライマリサーバーにまったく読み込まれていませんでした。

カウンターがインストールされていないことがわかりました、私はこれを手動で次のように行うことができました:

C:\Windows\system32>lodctr "D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSS
QLSERVER\MSSQL\Binn\perf-MSSQLSERVERsqlctr.ini"

SQLを再起動し、ブーム、テーブルにデータが入力されています-ミラーリング統計を含みます。


それは追跡するのが楽しいものだったに違いありません。
Zane、

0

プリンシパルインスタンスのデータベースミラーリング監視ジョブを削除して再作成してみましたか?

これには、データベースミラーリングセッションの再初期化は含まれません。データベースミラーリングモニターを管理するためにSSMSで使用されるのと同じストアドプロシージャを使用して、ジョブを削除して再作成するだけです。

Books Onlineエントリへのリンクは次のとおりです。

そして短いサンプルスクリプト:

    -- you'll need to be connected to the instance as a member
    -- of the sysadmin fixed server role, of course.

    -- delete the database mirroring monitoring job

    exec msdb.dbo.sp_dbmmonitordropmonitoring;
    go

    -- rebuild the database mirroring monitoring job
    -- the procedure accepts an optional parameter
    -- specifying the number of minutes between updates.
    -- the default is 1 minute.

    exec msdb.dbo.sp_dbmmonitoraddmonitoring;
    go

こんにちは、こんにちは、これは私が最初に試したものの1つでした。恐れていて、今すぐ再試行しました。変更はありません。私は弾丸を噛み、ミラーリングを削除して再度追加します。
HeavenCore 2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.