2012-01-26 13 views
8

हम SQL सर्वर लेनदेन लॉग कैसे पढ़ सकते हैं, मुझे डीबीसीसी लॉग (डेटाबेस, 4) का उपयोग करना पता है और यह लॉग आउटपुट उत्पन्न करेगा अब मैं लॉग रिकॉर्ड को डीकोड करना चाहता हूं जो हेक्स प्रारूप है।SQL सर्वर लेनदेन लॉग पढ़ें

0x00003E001C000000A500000001000200BE040000000006021D0000000100000018000000 (केवल डेटा का एक हिस्सा)

वहाँ पाठ स्वरूप में इसे पढ़ा या हेक्स डेटा परिवर्तित text.i एक उपकरण पढ़ सकते हैं कि logs.third पक्ष के उपकरणों के लिए उपलब्ध हैं बनाना चाहते करने के लिए किसी भी विधि है यानी एपेक्स एसक्यूएल लेकिन वे भुगतान उपकरण हैं।

+0

वास्तव में क्या करने के लिए? –

+0

[SQL सर्वर लेनदेन लॉग एक्सप्लोरर/विश्लेषक] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3789443/sql-server-transaction-log-explorer-analyzer) –

उत्तर

11

आप लेनदेन लॉग पढ़ने के लिए 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 Internals पुस्तक को कुछ विस्तार से शामिल किया गया है। आप इस संबंध में सहायता के लिए SQL Server Internals Viewer भी डाउनलोड कर सकते हैं (और मेरा मानना ​​है कि Mark Rasmussen के Orca MDF के लिए स्रोत कोड भी उपलब्ध है, जो संभवतः आंतरिक पंक्ति प्रारूप को डीकोड करने के लिए कुछ कोड है)।

टीएसक्यूएल में ऐसा करने के उदाहरण के लिए this blog post देखें जो दर्शाता है कि परियोजना के उद्देश्य तक सीमित होने तक लॉग से उपयोगी जानकारी निकालना पूरी तरह से संभव है। एक पूर्ण उड़ा हुआ लॉग रीडर लिखना जो वस्तुओं में स्कीमा परिवर्तनों और स्पैस कॉलम (और अगले संस्करण में कॉलम स्टोर इंडेक्स) जैसी चीजों का सामना कर सकता है, हालांकि यह संभवतः काम की एक बड़ी राशि होगी।

0

मैं आपकी ज़रूरतों को समझ नहीं सकता, लेकिन आपके लॉग से डेटा Lumigent LogExplorer जैसे टूल द्वारा निकाला जा सकता है। मैं जो कुछ भी चाहता हूं उसे करने के लिए मुझे एक और तरीका नहीं है।

1
Select * 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') 

आप संबंधित लेन-देन करने के सभी जानकारी ऊपर का उपयोग कर लॉग ऑन query..where रिकॉर्ड स्तंभ अपने वास्तविक रिकॉर्ड है जो हेक्साडेसिमल स्वरूप में है ..

जांच मानव पठनीय प्रारूप में अपने डेटा को प्राप्त करने के लिए इस लिंक प्रदर्शित करता है। check here

+0

आसानी से इस प्रश्न का सबसे अच्छा समाधान। बस मेरे लिए कुछ सैकड़ों पंक्तियों को बचाया। –

+1

@ मैजिक लासो - इसमें बिल्कुल वही लिंक है और काफी हद तक वही कोड है जैसा मैंने तीन महीने पहले पोस्ट किया था। –

2

कई एसक्यूएल सर्वर कार्य करता है और आदेशों (उदा fn_dblog, fn_dump_dblog, और बी सी सी पृष्ठ) है कि संभावित एलडीएफ फ़ाइल सामग्री को देखने के लिए एक तरीका प्रदान करते हैं। हालांकि, टी-एसक्यूएल के महत्वपूर्ण ज्ञान का उपयोग करने के लिए आवश्यक है, कुछ अनियंत्रित हैं, और उनके द्वारा प्रदान किए जाने वाले परिणाम मानव-पठनीय प्रारूप में परिवर्तित करना मुश्किल है। अनुसरण कर रहे हैं एलडीएफ फ़ाइल सामग्री को देखने एसक्यूएल सर्वर कार्यों और आदेश उपयोग करने के उदाहरण:

1 - यहाँ fn_dblog का उपयोग कर एक ऑनलाइन लेन-देन लॉग पढ़ने देता है, 129 कॉलम (केवल 7 यहाँ दिखाया गया है)

का एक परिणाम के साथ एक उदाहरण है

enter image description here

2 - fn_dump_dblog फ़ंक्शन का उपयोग लेनदेन लॉग देशी या मूल रूप से संपीड़ित बैकअप पढ़ने के लिए किया जाता है। परिणाम समान है:

enter image description here

दुर्भाग्य से, नहीं आधिकारिक दस्तावेज fn_dblog और fn_dump_dblog कार्यों के लिए उपलब्ध है।कॉलम का अनुवाद करने के लिए, आपको आंतरिक संरचना और डेटा प्रारूप, झंडे और पंक्ति डेटा में उनकी कुल संख्या से परिचित होना चाहिए

3 - डीबीसीसी पृष्ठ डेटाबेस ऑनलाइन फ़ाइलों - एमडीएफ और एलडीएफ की सामग्री को पढ़ने के लिए उपयोग किया जाता है। परिणाम हेक्साडेसिमल उत्पादन, व्याख्या करने के लिए

enter image description here

0

चरण 1. टेबल #hex ( [hex_Value] varbinary शून्य )

बनाएं जो जब तक आप एक हेक्स संपादक है, मुश्किल हो जाएगा चरण 2. तालिका में सम्मिलित डेटा, उदाहरण #hex मूल्यों (0x300008000F000000030000020015001B00536976754D79736F7265)

चरण 3. में डालने चयन LTRIM (RTRIM (परिवर्तित (VARCHAR (अधिकतम), REPLACE (hex_Value, 0x00, 0x20)))) #hex

से

For more Information go through this link

संबंधित मुद्दे