क्या SQL सर्वर के उस संस्करण को निर्धारित करने का एक तरीका है जिसका उपयोग MDF या BAK फ़ाइल बनाने के लिए किया गया था?


19

मेरे पास एक एसक्यूएल सर्वर डीबी की एक स्थानीय प्रतिलिपि एक एमडीएफ फ़ाइल के रूप में संग्रहीत है। क्या यह बताने का एक तरीका है कि उस फ़ाइल को बनाने के लिए SQL सर्वर के किस संस्करण का उपयोग किया गया था?

जवाबों:


8

आप ऑफसेट 0x12064 पर दो बाइट्स को देखकर किसी डेटाबेस की प्राथमिक एमडीएफ फ़ाइल का संस्करण निर्धारित कर सकते हैं। एक एमडीएफ फ़ाइल के डेटाबेस संस्करण का निर्धारण कैसे करें देखें ।

में .bakफ़ाइलों को कम बाइट 0xEAC है और उच्च 0xEAD है।

आप यहाँ MS SQL के लिए सबसे आंतरिक डेटाबेस संस्करण संख्या पा सकते हैं ।


1
ध्यान दें! यह MS SQL के x64 संस्करणों पर भिन्न प्रतीत होता है। सभी मामलों में 4 ब्लॉक हैं - एसएफएमबी, एसएसईटी, वीओएलबी, एमएससीआई। संस्करण MSCI ब्लॉक में है। समस्या ब्लॉक आकार स्थिर नहीं है। सौभाग्य से ऐसा लगता है कि ब्लॉक का आकार 512 (0x200) से विभाजित किया जा सकता है। तो बस हर 512 बाइट्स की तलाश करें और "MSCI" की तलाश करें। फिर निचली बाइट के लिए 172 बाइट (0xAC) और उच्च बाइट के लिए अगली बाइट कूदें।
Nux

22

अधिक पढ़ें, उदा

RESTORE HEADERONLY FROM DISK = 'D:\whatever.bak'

आपको बहुत सारे कॉलम मिलेंगे, लेकिन रुचि रखने वाले सॉफ्टवेयरवर्जनमेजर, सॉफ्टवेयरवर्जनमाइनर और सॉफ्टवेयरवार्डबाइल्ड हैं, जो आपको SQL सर्वर का वर्जन नंबर देना चाहिए। हमारे सिस्टम पर, उदाहरण के लिए, ये 10, 0, और 4000 हैं, जिसका अर्थ 10.0.4000 (2008 SP2) है।

निश्चित नहीं है कि यदि आप बैकअप के साथ ऐसा करने का प्रयास करते हैं, तो सर्वर पर चल रहे संस्करण को बहाल करने के लिए बहुत पुराना है, हालांकि - आपको बस एक त्रुटि मिल सकती है और कोई जानकारी नहीं (हालांकि यह अपने आप में कम से कम कुछ सुराग प्रदान करेगा) संस्करण यह से है)।


1
मैं यह कोशिश करने जा रहा था, लेकिन मेरे पास कोई बैकअप डिवाइस सेट अप नहीं है :-(, सुझाव के लिए धन्यवाद, हालांकि!
बेन मैककॉर्मैक

1
ध्यान दें कि जब आप SQL 2008 में SQL 2012 बैकअप का परीक्षण करते हैं तो आपको इस क्वेरी से कोई उपयोग करने योग्य परिणाम नहीं मिलेगा।
Nux

6

एमडीएफ फ़ाइलों के लिए इस कमांड का प्रयास करें:

dbcc checkprimaryfile ('c:\MyApp\AppData\foo.mdf', 2)

यह उत्पादन मूल्यों के साथ 3 गुण होगा: Database name, Database versionऔर Collation

वाक्यविन्यास निम्नलिखित है (कमांड अनिर्धारित है, इसलिए यहां अधिक जानकारी है ):

DBCC CHECKPRIMARYFILE ({'FileName'} [, opt = {0 | 1 | 3 | 3}])

FileName SQL सर्वर डेटाबेस प्राथमिक डेटा फ़ाइल .mdf फ़ाइल का वास्तविक पथ के अलावा कुछ भी नहीं है।

ऑप्ट = 0 - सत्यापित करता है कि फ़ाइल SQL सर्वर डेटाबेस प्राथमिक डेटा फ़ाइल (.mdf) है या नहीं।

Opt = 1 - डेटाबेस से जुड़ी सभी फाइलों का डाटाबेस का नाम, आकार, अधिकतम आकार, विकास, स्थिति और पथ।

ऑप्ट = 2 - डेटाबेस का नाम, संस्करण और टकराव की जानकारी देता है।

ऑप्ट = 3 - डेटाबेस से जुड़ी सभी फाइलों का नाम, स्थिति और पथ।


1
आप अपने उत्तर में स्पष्टीकरण जोड़ना चाह सकते हैं ताकि यह अधिक समझ में आए।
ड्रू खोरी

0

अच्छा प्रश्न! मैं ऐसा नहीं मानता, इसके अलावा ट्रायल एंड-एरर प्रोसेस - के अलावा - SQL Server 2005 R2 बैकअप फ़ाइल को SQL Server 2005 पर रिस्टोर करने की कोशिश कर रहा हूं। जाहिर है, यह काम नहीं करेगा। मुझे यह याद नहीं है कि क्या प्रबंधन स्टूडियो का उपयोग कर रहा हूं - और एक पुनर्स्थापना के लिए सामग्री बटन पर क्लिक करने से - आपको कुछ भी दिलचस्प दिखाई देगा।

मैंने उन्हें आज़माया नहीं है, लेकिन यह संभव है कि रेड गेट के वर्चुअल रिस्टोर जैसा कोई थर्ड पार्टी टूल आपको बताएगा - यह आपको बैकअप फ़ाइल के "डेटाबेस" को देखने की अनुमति देता है। http://www.red-gate.com/products/dba/sql-virtual-restore/



0

सबसे अच्छा तरीका है कि मैंने कभी ऐसा करने के लिए देखा है SQL सर्वर MSDN मंचों पर इस पोस्ट से चमकाया गया था ।

मूल रूप से इसमें फ़ाइल में शामिल होना और mdf फ़ाइल के बूट पृष्ठ की जांच करना शामिल है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.