Kami memiliki puluhan server prinsip dan mirror yang sesuai, sebagian besar bekerja dengan baik, namun, 1 di antaranya bertingkah aneh. Secara khusus, sp_dbmmonitorresults
proc mengembalikan semua kolom sebagai NULL untuk database prinsip yang diberikan sedangkan sp_dbmmonitorresults
pada mirror mengembalikan informasi yang valid:
Sekarang, saya punya ide kasar apa penyebabnya; ketika prinsip dan server mirror di mana pengaturan, pengaturan regional di mana tidak tepat pada primer (waktu sudah benar tetapi menggunakan wilayah +4 (Amerika dll), wilayah waktu dikoreksi ke GMT +0 SETELAH mirroring sedang diatur (sekolah kesalahan anak laki-laki saya tahu, tapi c'est la vie!)
Edit: 19/12/2012
Hari ini saya menghapus mirroring, menghapus salinan di mirror dan mengatur ulang mirroring, namun ini tidak menyelesaikan masalah! Saya akan memberi hadiah pada pertanyaan ini untuk mencoba dan menyelesaikannya.
Untuk mengonfirmasi, jika saya menjalankan EXEC sp_dbmmonitorresults @database_name = 'ProScript'
secara manual pada setiap server, ia mengembalikan NULL untuk sebagian besar nilai pada primer tetapi mengembalikan denda pada cermin, seperti yang ditunjukkan:
Saat Berlari di utama:
Zoom: Klik untuk versi ukuran penuh
Saat Berlari di cermin:
Zoom: Klik untuk versi ukuran penuh
Seperti yang Anda lihat, waktunya saat ini dan database disinkronkan tetapi log_generation_rate, unsent_log, send_rate dll vare semua NULL pada primer?
Kedua server memiliki pekerjaan montior yang berjalan setiap menit dengan exec sys.sp_dbmmonitorupdate
sebagai langkah kerja dll.
Melihat pada sumber sys.sp_dbmmonitorupdate ia mengambil nilai-nilai ini dari sys.dm_os_performance_counters
- jadi jika saya menjalankan hal berikut di cermin:
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' )
Saya mendapatkan hasil yang baik:
Namun, jika saya menjalankan SQL yang sama pada primary tidak ada baris!
Ini akan menunjukkan bahwa sys.dm_os_performance_counters
tabel tidak diisi untuk mirroring? Apa yang menyebabkannya ???
sumber
Sudahkah Anda mencoba menghapus pekerjaan pemantauan mirroring basis data pada instance utama dan membuatnya kembali?
Ini tidak melibatkan menginisialisasi ulang sesi mirroring database, hanya menjatuhkan dan menciptakan kembali pekerjaan menggunakan prosedur tersimpan yang sama yang digunakan oleh SSMS untuk mengelola monitor mirroring database.
Berikut ini tautan ke entri Books Online:
Dan skrip contoh singkat:
sumber