Adakah di mana saja saya dapat mencari menemukan transaksi gagal di SQL server 2012?
10
Adakah di mana saja saya dapat mencari menemukan transaksi gagal di SQL server 2012?
Tidak, SQL Server tidak memiliki riwayat tentang transaksi yang dibatalkan / dibatalkan yang sepele untuk sampai ke dan tidak memperkenalkan potensi masalah tambahan (seperti yang dijabarkan dalam jawaban @ ooutwire ). Atau bahkan transaksi yang sudah dilakukan.
Anda harus melakukan pendataan Anda sendiri dalam penanganan kesalahan Anda, atau menangkap peristiwa terkait transaksi tertentu menggunakan jejak sisi server atau Peristiwa Diperpanjang.
Jejak:
Peristiwa diperpanjang:
Ketika Anda mengatakan transaksi "gagal", apa sebenarnya yang Anda maksud?
Jika Anda ingin melihat transaksi saat ini, Anda dapat menggunakan
sys.dm_tran_active_transactions
DMV.Juga,
sys.dm_exec_sessions
memilikiopen_transaction_count
yang dapat memberi Anda informasi ini dengan sesi. Di bawah ini adalah permintaan diagnostik untuk menarik semua proses pengguna yang memiliki transaksi terbuka:Informasi ini juga dapat diambil dari
sys.dm_tran_session_transactions
:Jika Anda ingin menangkap ketika transaksi dibatalkan (dengan asumsi keinginan Anda untuk transaksi "gagal"), Anda dapat menangkap acara Extended Events
rollback_tran_completed
. Jika Anda mencari tampilan "segalanya" dari transaksi, Anda dapat menangkapsql_transaction
peristiwa, yang didefinisikan oleh SQL Serversumber
Anda dapat menggunakan fn_dblog () dan menemukan ID transaksi untuk transaksi yang dibatalkan serta sejumlah informasi berguna lainnya.
Ini memindai semua log transaksi di bagian aktif dari log. Ini dapat ditunggangi menggunakan jejak bendera 2537, yang akan memungkinkan Anda untuk kembali sejauh mungkin ke awal VLF "tidak digunakan kembali" tertua. Berhati-hatilah saat menggunakan fungsi ini, karena memindai log secara acak dan log tidak dapat berubah saat pemindaian terjadi; jadi, Anda mungkin melihat pertumbuhan log.
Anda juga dapat menggunakan fn_dump_dblog terhadap file cadangan log.
sumber