Log cermin kosong pada primer tetapi baik-baik saja di cermin

8

Kami memiliki puluhan server prinsip dan mirror yang sesuai, sebagian besar bekerja dengan baik, namun, 1 di antaranya bertingkah aneh. Secara khusus, sp_dbmmonitorresultsproc mengembalikan semua kolom sebagai NULL untuk database prinsip yang diberikan sedangkan sp_dbmmonitorresultspada mirror mengembalikan informasi yang valid:

Sejarah di Server Prinsip

Sejarah di Server Cermin

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:

masukkan deskripsi gambar di sini Zoom: Klik untuk versi ukuran penuh

Saat Berlari di cermin:

masukkan deskripsi gambar di sini 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_dbmmonitorupdatesebagai 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:

masukkan deskripsi gambar di sini

Namun, jika saya menjalankan SQL yang sama pada primary tidak ada baris!

Ini akan menunjukkan bahwa sys.dm_os_performance_counterstabel tidak diisi untuk mirroring? Apa yang menyebabkannya ???

HeavenCore
sumber

Jawaban:

5

Yah, butuh berbulan-bulan, tetapi akhirnya saya menemukan masalah!

Sys.dm_os_performance_counters tidak diisi sama sekali di server utama.

Ternyata penghitung di mana tidak diinstal, saya bisa melakukan ini secara manual sebagai berikut:

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

SQL yang dimulai ulang, dan boom, tabel sekarang sedang diisi - termasuk statistik mirroring saya.

HeavenCore
sumber
Pasti menyenangkan untuk dilacak.
Zane
0

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:

    -- 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
kozloski
sumber
Hai Koz, ini adalah salah satu hal pertama yang saya coba. Saya khawatir, saya baru saja mencoba ulang sekarang, tidak ada perubahan. Saya hanya akan menggigit peluru dan menghapus mirror & menambahkan kembali.
HeavenCore