Saya memiliki situs pelanggan dengan dua Server SQL 2008r2 yang dikonfigurasi serupa "A" dan "C". Di kedua server, tanda jejak 1204 dan 1222 diaktifkan dan DBCC tracestatus
menunjukkan yang berikut di kedua server:
TraceFlag Status Global Session
1204 1 1 0
1222 1 1 0
3605 1 1 0
Pada A, jejak jejak berfungsi seperti yang diharapkan, saat terjadi deadlock, kami mendapatkan laporan deadlock 1204 dan 1222 di log kesalahan. Namun, pada C, hanya laporan 1204 yang muncul, kami tidak pernah mendapatkan laporan 1.222.
Untuk kehidupan saya, saya tidak dapat melihat alasan untuk perbedaan ini. Saya telah meneliti ini secara ekstensif di Google, dan membaca (dan membaca kembali) dokumen MS pada tanda jejak ini, dan saya tidak dapat menemukan laporan perilaku seperti ini, atau petunjuk apa pun tentang apa yang mungkin menyebabkannya. Satu-satunya hal yang mendekati adalah klaim sesekali bahwa tidak ada bendera jejak yang berfungsi, tetapi ini semua ternyata kasus adalah mereka memiliki kesalahan ketik pada perintah yang memungkinkan. Saya tahu ini bukan masalahnya karena saya telah menggunakan DBCC TRACESTATUS untuk mengkonfirmasinya.
Jadi wawasan apa pun yang mungkin menyebabkan hanya jejak bendera 1222 untuk tidak berfungsi dan / atau cara memperbaikinya akan sangat dihargai.
Nah, ini perkembangan yang menarik. Setiap kali saya menghasilkan kebuntuan sendiri (menggunakan kode ini: /programming/7813321/how-to-deliberately-cause-a-deadlock ), maka saya mendapatkan kedua laporan penelusuran di log kesalahan. Hanya kebuntuan "alami" yang terjadi setiap beberapa hari dari aplikasi yang tampaknya hanya memicu salah satu laporan kebuntuan. Tidak yakin jika ini membantu, apakah ada alasan untuk percaya bahwa jejak 1222 tidak akan melaporkan semua kondisi jalan buntu yang sama dengan 1204?
sumber
xml_deadlock_report
yang sudah menjadi bagian darisystem_health session
. Lihat posting ini untuk lebih jelasnya. Periksa itu untuk melihat apakah Anda dapat melihat kebuntuan.<inputbuf> BEGIN TRAN UPDATE dbo.DeadLockTest2 SET col1 = 1 UPDATE dbo.DeadLockTest SET col1 = 1 </inputbuf>
;mode="X" associatedObjectId="72057594039107584"
. Apakah saya melewatkan sesuatu? Saya menggunakanSELECT CAST(xet.target_data AS XML) AS XMLDATA FROM sys.dm_xe_session_targets xet JOIN sys.dm_xe_sessions xe ON (xe.address = xet.event_session_address) WHERE xe.name = 'system_health'
Jawaban:
Saya memiliki masalah serupa, tidak yakin itu akan mengurutkan masalah Anda.
Coba ini:
Meskipun masuk log peristiwa melalui bendera jejak, ini juga perlu diatur untuk memicu email. Anda dapat melihat tabelnya di sini:
Anda dapat memiliki detail lebih lanjut di sini
sumber