Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर लेनदेन लॉग पढ़ें

आप 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 में ऐसा करने के उदाहरण के लिए देखें यह ब्लॉग पोस्ट जो दर्शाता है कि जब तक परियोजना का उद्देश्य सीमित है, तब तक लॉग से उपयोगी जानकारी निकालना पूरी तरह से संभव है। एक पूर्ण विकसित लॉग रीडर लिखना जो वस्तुओं में स्कीमा परिवर्तनों का सामना कर सकता है और स्पैस कॉलम (और अगले संस्करण में कॉलम स्टोर इंडेक्स) जैसी चीजों का सामना कर सकता है, हालांकि यह एक बड़ी मात्रा में काम होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL में डिलीट स्टेटमेंट बहुत धीमा है

  2. पूर्ण पाठ अनुक्रमणिका के दो स्तंभों पर एक CONTAINS () कैसे करें खोज SQL

  3. SQL सर्वर में किसी तालिका के लिए सभी जाँच और विदेशी कुंजी बाधाओं को कैसे अक्षम करें (T-SQL उदाहरण)

  4. इस SQL ​​​​सर्वर क्वेरी डिवीजन गणना में क्या गलत है?

  5. आप कैसे निर्धारित करते हैं कि SQL टेबल्स में प्रोग्रामेटिक रूप से पहचान कॉलम क्या है?