มีวิธีการตรวจสอบรุ่นของ SQL Server ที่ใช้สร้างไฟล์ MDF หรือ BAK หรือไม่?


19

ฉันมีสำเนา SQL เซิร์ฟเวอร์ DB เก็บไว้เป็นไฟล์ MDF มีวิธีบอกรุ่นของ SQL Server ที่ใช้สร้างไฟล์นั้นหรือไม่?

คำตอบ:


8

คุณสามารถกำหนดเวอร์ชันของไฟล์ MDF หลักของฐานข้อมูลโดยดูที่สองไบต์ที่ออฟเซ็ต 0x12064 ดูวิธีการตรวจสอบฐานข้อมูลรุ่นของแฟ้ม MDF

ใน.bakไฟล์ที่ต่ำกว่าคือ 0xEAC และสูงกว่าคือ 0xEAD

คุณสามารถค้นหามากที่สุดหมายเลขรุ่นฐานข้อมูลภายในสำหรับ MS SQL ที่นี่


1
บันทึก! สิ่งนี้ดูเหมือนจะแตกต่างจาก MS SQL รุ่น x64 ในทุกกรณีมี 4 บล็อก - SFMB, SSET, VOLB, MSCI เวอร์ชันอยู่ในบล็อก MSCI ปัญหาคือขนาดบล็อกไม่คงที่ โชคดีที่ดูเหมือนว่าขนาดบล็อกสามารถหารด้วย 512 (0x200) ดังนั้นให้ค้นหาทุก 512 ไบต์และค้นหา "MSCI" จากนั้นกระโดด 172 ไบต์ (0xAC) เพื่อลดไบต์และไบต์ถัดไปสำหรับไบต์ที่สูงขึ้น
Nux

22

ใช้ RESTORE HEADERONLY เช่น

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

คุณจะได้รับคอลัมน์จำนวนมาก แต่สิ่งที่น่าสนใจคือ SoftwareVersionMajor, SoftwareVersionMinor และ SoftwareVersionBuild ซึ่งควรให้หมายเลขเวอร์ชันของ SQL Server ตัวอย่างเช่นในระบบของเราเช่น 10, 0 และ 4000 หมายถึง 10.0.4000 (2008 SP2)

ไม่แน่ใจว่าจะเกิดอะไรขึ้นถ้าคุณพยายามทำสิ่งนี้ด้วยการสำรองข้อมูลที่เก่าเกินไปที่จะเรียกคืนในเวอร์ชั่นที่เซิร์ฟเวอร์กำลังทำงานอยู่อย่างไรก็ตามคุณอาจได้รับข้อผิดพลาดและไม่มีข้อมูล รุ่นที่มาจาก)


1
ฉันกำลังจะลองสิ่งนี้ แต่ฉันไม่ได้ตั้งค่าอุปกรณ์สำรองใด ๆ :-( ขอบคุณสำหรับคำแนะนำ!
Ben McCormack

1
โปรดทราบว่าคุณจะไม่ได้รับผลลัพธ์ที่สามารถใช้งานได้จากแบบสอบถามนี้เมื่อคุณทำการทดสอบการสำรองข้อมูล SQL 2012 บน SQL 2008
Nux

6

สำหรับไฟล์ MDF ลองใช้คำสั่งนี้:

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

มันจะออก 3 คุณสมบัติที่มีค่า: Database name, และDatabase versionCollation

ไวยากรณ์กำลังติดตาม (คำสั่งไม่มีเอกสารดังนั้นข้อมูลเพิ่มเติมที่นี่ ):

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

FileName คืออะไรนอกจากเส้นทางที่แท้จริงของไฟล์. mdf ของไฟล์ฐานข้อมูล SQL Server

Opt = 0 - ตรวจสอบว่าไฟล์เป็นไฟล์ข้อมูลหลักของฐานข้อมูลเซิร์ฟเวอร์ SQL (.mdf)

Opt = 1 - ส่งคืนชื่อฐานข้อมูล, ขนาด, ขนาดสูงสุด, การเติบโต, สถานะและเส้นทางของไฟล์ทั้งหมดที่เชื่อมโยงกับฐานข้อมูล

Opt = 2 - ส่งคืนชื่อฐานข้อมูลเวอร์ชันและข้อมูลการเรียงหน้า

Opt = 3 - ส่งคืนชื่อสถานะและเส้นทางของไฟล์ทั้งหมดที่เชื่อมโยงกับฐานข้อมูล


1
คุณอาจต้องการเพิ่มคำอธิบายให้กับคำตอบของคุณเพื่อให้เข้าใจได้ง่ายขึ้น
Drew Khoury

0

คำถามที่ดี! ฉันไม่เชื่ออย่างนั้นนอกจากกระบวนการลองผิดลองถูก - พูด - พยายามกู้คืนไฟล์สำรองของ SQL Server 2008 R2 ไปยัง SQL Server 2005 แน่นอนว่านั่นไม่ได้ผล ฉันจำไม่ได้ว่าการใช้ Studio จัดการ - และคลิกที่ปุ่มเนื้อหาสำหรับการกู้คืน - จะแสดงอะไรที่น่าสนใจ

ฉันไม่ได้ลอง แต่เป็นไปได้ว่าเครื่องมือของบุคคลที่สามเช่น Virtual Restore ของ Red Gate จะบอกคุณ - ช่วยให้คุณดูฐานข้อมูล "ข้างใน" ไฟล์สำรองข้อมูล http://www.red-gate.com/products/dba/sql-virtual-restore/



0

วิธีที่ดีที่สุดที่ฉันเคยเห็นในการทำเช่นนี้ถูกรวบรวมจากโพสต์นี้ในฟอรัม SQL Server MSDN

โดยทั่วไปจะเกี่ยวข้องกับการเข้าไปในไฟล์และตรวจสอบหน้าบูตของไฟล์ mdf

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.