ฉันมีสำเนา SQL เซิร์ฟเวอร์ DB เก็บไว้เป็นไฟล์ MDF มีวิธีบอกรุ่นของ SQL Server ที่ใช้สร้างไฟล์นั้นหรือไม่?
ฉันมีสำเนา SQL เซิร์ฟเวอร์ DB เก็บไว้เป็นไฟล์ MDF มีวิธีบอกรุ่นของ SQL Server ที่ใช้สร้างไฟล์นั้นหรือไม่?
คำตอบ:
คุณสามารถกำหนดเวอร์ชันของไฟล์ MDF หลักของฐานข้อมูลโดยดูที่สองไบต์ที่ออฟเซ็ต 0x12064 ดูวิธีการตรวจสอบฐานข้อมูลรุ่นของแฟ้ม MDF
ใน.bak
ไฟล์ที่ต่ำกว่าคือ 0xEAC และสูงกว่าคือ 0xEAD
คุณสามารถค้นหามากที่สุดหมายเลขรุ่นฐานข้อมูลภายในสำหรับ MS SQL ที่นี่
ใช้ RESTORE HEADERONLY เช่น
RESTORE HEADERONLY FROM DISK = 'D:\whatever.bak'
คุณจะได้รับคอลัมน์จำนวนมาก แต่สิ่งที่น่าสนใจคือ SoftwareVersionMajor, SoftwareVersionMinor และ SoftwareVersionBuild ซึ่งควรให้หมายเลขเวอร์ชันของ SQL Server ตัวอย่างเช่นในระบบของเราเช่น 10, 0 และ 4000 หมายถึง 10.0.4000 (2008 SP2)
ไม่แน่ใจว่าจะเกิดอะไรขึ้นถ้าคุณพยายามทำสิ่งนี้ด้วยการสำรองข้อมูลที่เก่าเกินไปที่จะเรียกคืนในเวอร์ชั่นที่เซิร์ฟเวอร์กำลังทำงานอยู่อย่างไรก็ตามคุณอาจได้รับข้อผิดพลาดและไม่มีข้อมูล รุ่นที่มาจาก)
สำหรับไฟล์ MDF ลองใช้คำสั่งนี้:
dbcc checkprimaryfile ('c:\MyApp\AppData\foo.mdf', 2)
มันจะออก 3 คุณสมบัติที่มีค่า: Database name
, และDatabase version
Collation
ไวยากรณ์กำลังติดตาม (คำสั่งไม่มีเอกสารดังนั้นข้อมูลเพิ่มเติมที่นี่ ):
DBCC CHECKPRIMARYFILE ({'FileName'} [, opt = {0 | 1 | 2 | 3}])
FileName คืออะไรนอกจากเส้นทางที่แท้จริงของไฟล์. mdf ของไฟล์ฐานข้อมูล SQL Server
Opt = 0 - ตรวจสอบว่าไฟล์เป็นไฟล์ข้อมูลหลักของฐานข้อมูลเซิร์ฟเวอร์ SQL (.mdf)
Opt = 1 - ส่งคืนชื่อฐานข้อมูล, ขนาด, ขนาดสูงสุด, การเติบโต, สถานะและเส้นทางของไฟล์ทั้งหมดที่เชื่อมโยงกับฐานข้อมูล
Opt = 2 - ส่งคืนชื่อฐานข้อมูลเวอร์ชันและข้อมูลการเรียงหน้า
Opt = 3 - ส่งคืนชื่อสถานะและเส้นทางของไฟล์ทั้งหมดที่เชื่อมโยงกับฐานข้อมูล
คำถามที่ดี! ฉันไม่เชื่ออย่างนั้นนอกจากกระบวนการลองผิดลองถูก - พูด - พยายามกู้คืนไฟล์สำรองของ SQL Server 2008 R2 ไปยัง SQL Server 2005 แน่นอนว่านั่นไม่ได้ผล ฉันจำไม่ได้ว่าการใช้ Studio จัดการ - และคลิกที่ปุ่มเนื้อหาสำหรับการกู้คืน - จะแสดงอะไรที่น่าสนใจ
ฉันไม่ได้ลอง แต่เป็นไปได้ว่าเครื่องมือของบุคคลที่สามเช่น Virtual Restore ของ Red Gate จะบอกคุณ - ช่วยให้คุณดูฐานข้อมูล "ข้างใน" ไฟล์สำรองข้อมูล http://www.red-gate.com/products/dba/sql-virtual-restore/
คุณสามารถค้นหาได้โดยใช้ข้อมูลในหน้าบูตของฐานข้อมูล ฉันเขียนเกี่ยวกับเรื่องนี้ที่http://sankarreddy.com/2010/05/database-internal-version-create-version-and-current-version/
วิธีที่ดีที่สุดที่ฉันเคยเห็นในการทำเช่นนี้ถูกรวบรวมจากโพสต์นี้ในฟอรัม SQL Server MSDN
โดยทั่วไปจะเกี่ยวข้องกับการเข้าไปในไฟล์และตรวจสอบหน้าบูตของไฟล์ mdf