Transaction (Process ID) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Saya mendapatkan kesalahan ini secara acak ketika salah satu situs web saya sibuk. Saya tahu kira-kira set tabel mana yang sedang terjadi tetapi dalam pengalaman saya dengan program lain saya biasanya mendapatkan SQL kembali di mana kebuntuan terjadi. Apakah ada bendera yang harus saya nyalakan untuk memungkinkan ini terjadi?
Saya akan mencoba dan debug kebuntuan itu sendiri sebagai masalah yang terpisah karena ini adalah pertanyaan utama saya untuk saat ini.
Saya menggunakan SQL Server 2008 Edisi Standar.
sql-server-2008
deadlock
webnoob
sumber
sumber
;-T1204
untuk tanda jejak untuk mengakhiri dan memulai kembali layanan.-1
Parameter yangDBCC TRACEON
menandakan global.Jawaban:
Data yang Anda butuhkan dicatat dalam jejak peristiwa diperpanjang standar.
Meskipun itu tidak akan ada lagi jika Anda telah me-restart layanan -eg untuk menerapkan tanda jejak atau jika buffer telah bersepeda sementara itu.
Anda dapat mengatur jejak peristiwa diperpanjang Anda sendiri yang menyimpan grafik kebuntuan ke target file untuk penyimpanan non-volatile persisten. Contoh Kode di sini . Saya pribadi menemukan grafik kebuntuan XML lebih ramah daripada keluaran flag trace.
Edit
CAST(REPLACE(REPLACE(XEventData.XEvent.value('(data/value)[1]', 'varchar(max)'), '<victim-list>', '<deadlock><victim-list>'), '<process-list>', '</victim-list><process-list>') AS XML) AS DeadlockGraph
dalamSELECT
daftar seperti yang dijelaskan di sini .sumber
Jawaban yang diterima tidak bekerja untuk saya secara konsisten. Buffer cincin tampaknya diketahui dapat menjatuhkan peristiwa dalam kondisi tertentu ..
ConnectItem
Masalah Ring Buffer
File event log system_health dapat diuraikan (dari jawaban ini ):
Kolom XdlFile dapat disimpan ke file .xdl dan membaca SSMS. Diuji dalam Sql Server 2012.
sumber