जवाबों:
नहीं, SQL सर्वर लेन-देन के बारे में कोई इतिहास नहीं रखता है जिसे वापस ले लिया गया था / लुढ़का हुआ था जो कि अतिरिक्त संभावित समस्याओं का परिचय नहीं देता है और ( ओटवायर के उत्तर में उल्लिखित है )। या यहां तक कि लेनदेन भी किया गया है।
आपको अपनी त्रुटि से निपटने के लिए अपनी लॉगिंग का प्रदर्शन करना होगा, या सर्वर-साइड ट्रेस या विस्तारित इवेंट का उपयोग करके विशिष्ट लेनदेन से संबंधित घटनाओं को कैप्चर करना होगा।
ट्रेस:
विस्तारित कार्यक्रम:
जब आप "विफल" लेनदेन कहते हैं, तो वास्तव में आपका क्या मतलब है?
यदि आप उदाहरण पर वर्तमान लेनदेन देखना चाहते हैं, तो आप sys.dm_tran_active_transactions
DMV का उपयोग कर सकते हैं ।
इसके अलावा, sys.dm_exec_sessions
यह है open_transaction_count
कि आप सत्र के द्वारा यह जानकारी दे सकते हैं। नीचे सभी उपयोगकर्ता प्रक्रियाओं को खोलने के लिए एक नैदानिक क्वेरी है जिसमें खुले लेनदेन हैं:
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;
यह जानकारी भी इससे खींची जा सकती है sys.dm_tran_session_transactions
:
select
session_id,
is_user_transaction,
open_transaction_count
from sys.dm_tran_session_transactions;
यदि आप लेन-देन को वापस लुढ़काना चाहते हैं, तो ("विफल" लेनदेन के लिए आपकी इच्छा से बहुत कुछ मानते हुए) आप विस्तारित ईवेंट rollback_tran_completed
ईवेंट को कैप्चर कर सकते हैं । यदि आप लेनदेन के "सब कुछ" दृश्य की तलाश कर रहे हैं, तो आप उस sql_transaction
ईवेंट को कैप्चर कर सकते हैं , जिसे SQL सर्वर द्वारा परिभाषित किया गया है
SQL सर्वर ट्रांज़ेक्शन शुरू होने पर, वापस आता है या सहेजता है। अनुप्रयोग, ट्रिगर या संग्रहीत कार्यविधियों का निवारण करते समय लेन-देन व्यवहार की निगरानी के लिए इस घटना का उपयोग करें।
आप fn_dblog () का उपयोग कर सकते हैं और निरस्त लेनदेन के लिए लेन-देन आईडी के साथ-साथ अन्य उपयोगी जानकारी के एक मेजबान का पता लगा सकते हैं।
चुनते हैं * Fn_dblog (NULL, NULL) से कहाँ ऑपरेशन = 'LOP_ABORT_XACT'; जाओ
यह लॉग के सक्रिय हिस्से में सभी लेनदेन लॉग को स्कैन करता है। ट्रेस फ्लैग 2537 का उपयोग करके इसे ओवर-राइड किया जा सकता है, जो आपको सबसे पुराने "अन-रीयूज्ड" वीएलएफ की शुरुआत के लिए जितना संभव हो सके वापस जाने की अनुमति देगा। इस फ़ंक्शन का उपयोग करते समय सावधान रहें, क्योंकि यह लॉग को बेतरतीब ढंग से स्कैन करता है और स्कैन होने पर लॉग बदल नहीं सकता है; इसलिए, आप लॉग वृद्धि देख सकते हैं।
आप लॉग बैकअप फ़ाइल के खिलाफ fn_dump_dblog का भी उपयोग कर सकते हैं।