हम पूर्ण पुनर्प्राप्ति मोड के साथ SQL सर्वर का उपयोग कर रहे हैं। पूर्ण बैकअप और लॉग बैकअप की एक श्रृंखला को देखते हुए, हम यह जांचने में सक्षम होना चाहते हैं कि लॉग श्रृंखला अंतिम पूर्ण बैकअप से वर्तमान पूंछ लॉग तक पूर्ण है या नहीं। (वास्तव में इन बैकअपों को बहाल किए बिना; यहां का उद्देश्य बैकअप की स्थिरता का परीक्षण करना है।)
मुझे पहले से ही पता है कि मौजूदा बैकअप के लिए यह कैसे करना है: RESTORE HEADERONLY का उपयोग करके मुझे हर फ़ाइल का FirstLSN और LastLSN मिलता है, जिसकी तुलना लगातार फ़ाइलों के लिए की जा सकती है, ताकि यह निर्धारित किया जा सके कि क्या वे संगत हैं।
हालाँकि, मुझे नहीं पता कि कैसे जाँचें कि क्या पूंछ लॉग अंतिम लॉग बैकअप के बाद है।
यदि मेरे पास टेल लॉग का FirstLSN था, तो मैं इसकी तुलना लास्ट लॉग बैकअप के LastLSN से कर सकता था। लेकिन मैं पूंछ लॉग के FirstLSN कैसे प्राप्त कर सकता हूं?
मुझे एक समाधान की आवश्यकता है जो SQL Server 2005 से ऊपर की ओर काम करता है (आदर्श रूप से t-sql का उपयोग करके)। अब तक, मैंने Google को बिना किसी लाभ के खोजा है। Btw। मैंने पहली बार स्टैकओवरफ़्लो पर इसे पोस्ट किया; लेकिन इसे यहां से माइग्रेट किया गया क्योंकि इसे वहां से ऑफ-टॉप किया गया था।
संपादित करें
मैंने एक छोटे से उदाहरण (SQL Server 2005, 9.0.5057) पर दो प्रदान किए गए समाधानों की कोशिश की:
BACKUP DATABASE TestDb TO DISK = 'C:\temp\backup test\Full.bak'
-- fire some update queries
BACKUP LOG TestDb TO DISK = 'C:\temp\backup test\Log1.bak'
-- fire both queries from the provided answers:
-- Martin Smith's answer yields: 838886656088920652852608
-- Shawn Melton's answer yields: 46000000267600001
RESTORE HEADERONLY FROM DISK = 'C:\temp\backup test\Log1.bak'
-- yields: 46000000267600001
तो यह प्रतीत होता है कि परिमाण के कई आदेशों से पहला बंद है।
फिर मैंने SQL 2008 SP1 (10.00.2531) पर एक ही परीक्षण किया, जहां दोनों प्रश्नों ने सही उत्तर दिया।