आप sys.fn_dblog
. का उपयोग कर सकते हैं लेनदेन लॉग पढ़ने के लिए। नीचे उदाहरण।
SELECT [RowLog Contents 0],
[RowLog Contents 1],
[Current LSN],
Operation,
Context,
[Transaction ID],
AllocUnitId,
AllocUnitName,
[Page ID],
[Slot ID]
FROM sys.fn_dblog(NULL,NULL)
WHERE Context IN ('LCX_MARK_AS_GHOST', 'LCX_HEAP', 'LCX_CLUSTERED')
AND Operation IN ('LOP_DELETE_ROWS', 'LOP_INSERT_ROWS')
delete
के लिए और insert
ऑपरेशन IIRC [RowLog Contents 0]
सम्मिलित और हटाई गई पूरी पंक्ति शामिल है। अपडेट थोड़े अधिक जटिल होते हैं जिसमें केवल एक आंशिक पंक्ति को ही लॉग किया जा सकता है।
इस पंक्ति प्रारूप को डीकोड करने के लिए आपको यह समझने की आवश्यकता है कि SQL सर्वर में पंक्तियों को आंतरिक रूप से कैसे संग्रहीत किया जाता है। पुस्तक Microsoft SQL Server 2008 इंटर्नलए> इसे कुछ विस्तार से कवर करता है। आप SQL सर्वर इंटर्नल व्यूअर भी डाउनलोड कर सकते हैं इस संबंध में मदद करने के लिए (और मेरा मानना है कि Mark Rasmussen के लिए स्रोत कोड का Orca MDF यह भी उपलब्ध है जिसमें संभावित रूप से आंतरिक पंक्ति प्रारूप को डीकोड करने के लिए कुछ कोड है)।
TSQL में ऐसा करने के उदाहरण के लिए देखें यह ब्लॉग पोस्ट जो दर्शाता है कि जब तक परियोजना का उद्देश्य सीमित है, तब तक लॉग से उपयोगी जानकारी निकालना पूरी तरह से संभव है। एक पूर्ण विकसित लॉग रीडर लिखना जो वस्तुओं में स्कीमा परिवर्तनों का सामना कर सकता है और स्पैस कॉलम (और अगले संस्करण में कॉलम स्टोर इंडेक्स) जैसी चीजों का सामना कर सकता है, हालांकि यह एक बड़ी मात्रा में काम होगा।