Yanıtlar:
Hayır, SQL Server, alınıp önemsiz olan ve ek potansiyel sorunlar getirmeyen (@ ooutwire'ın cevabında belirtildiği gibi) iptal edilen / geri alınan işlemler hakkında herhangi bir geçmiş tutmaz . Hatta taahhüt edilen işlemler bile.
Hata işlemede kendi günlüğünüzü gerçekleştirmeniz veya sunucu tarafı izlemesini veya Genişletilmiş Olayları kullanarak işlemle ilgili belirli olayları yakalamanız gerekir.
Trace:
Genişletilmiş etkinlikler:
"Başarısız" işlemler derken, tam olarak ne demek istiyorsun?
Örneğin geçerli işlemleri görmek istiyorsanız, sys.dm_tran_active_transactions
DMV'yi kullanabilirsiniz .
Ayrıca, sys.dm_exec_sessions
sahip open_transaction_count
size oturumda bu bilgileri verebilir. Aşağıda, açık işlemleri olan tüm kullanıcı işlemlerini çekmek için tanılama sorgusu bulunmaktadır:
select
s.session_id,
s.login_name,
s.open_transaction_count,
st.text as most_recent_sql_text
from sys.dm_exec_sessions s
inner join sys.dm_exec_connections c
on s.session_id = c.session_id
outer apply sys.dm_exec_sql_text(c.most_recent_sql_handle) st
where s.is_user_process = 1
and s.open_transaction_count > 0;
Bu bilgiler aşağıdakilerden de alınabilir sys.dm_tran_session_transactions
:
select
session_id,
is_user_transaction,
open_transaction_count
from sys.dm_tran_session_transactions;
İşlemlerin ne zaman geri alındığını yakalamak istiyorsanız ("başarısız" işlemler isteğiniz tarafından çok fazla varsayılırsa) Genişletilmiş Etkinlikler rollback_tran_completed
etkinliğini yakalayabilirsiniz . İşlemlerin "her şey" görünümünü arıyorsanız sql_transaction
, SQL Server tarafından tanımlanan etkinliği yakalayabilirsiniz.
Bir SQL Server işlemi başladığında, tamamladığında, geri döndüğünde veya bir kayıt noktası çalıştırdığında oluşur. Uygulamaları, tetikleyicileri veya saklı yordamları giderirken işlem davranışını izlemek için bu olayı kullanın.
Fn_dblog () öğesini kullanabilir ve iptal edilen işlemler için işlem kimliklerini ve diğer birçok yararlı bilgiyi bulabilirsiniz.
SEÇ * BAŞLANGIÇ fn_dblog (NULL, NULL) NEREDE İşlem = 'LOP_ABORT_XACT'; GİT
Günlüğün etkin bölümündeki tüm işlem günlüğünü tarar. Bu, en eski "yeniden kullanılmayan" VLF'nin başlangıcına mümkün olduğunca geri dönmenizi sağlayacak olan izleme bayrağı 2537 kullanılarak geçersiz kılınabilir. Bu işlevi kullanırken dikkatli olun, çünkü günlüğü rastgele tarar ve tarama yapılırken günlüğü değişemez; yani, günlük büyümesi görebilirsiniz.
Bir günlük yedekleme dosyasına karşı da fn_dump_dblog kullanabilirsiniz.