Tôi có một bản sao cục bộ của SQL Server DB được lưu dưới dạng tệp MDF. Có cách nào để biết phiên bản SQL Server nào đã được sử dụng để tạo tệp đó không?
Tôi có một bản sao cục bộ của SQL Server DB được lưu dưới dạng tệp MDF. Có cách nào để biết phiên bản SQL Server nào đã được sử dụng để tạo tệp đó không?
Câu trả lời:
Bạn có thể xác định phiên bản của tệp MDF chính của cơ sở dữ liệu bằng cách xem hai byte ở offset 0x12064. Xem Cách xác định phiên bản cơ sở dữ liệu của tệp MDF .
Trong .bak
các tệp byte thấp hơn là 0xEAC và cao hơn là 0xEAD.
Bạn có thể tìm thấy hầu hết các số phiên bản cơ sở dữ liệu nội bộ cho MS SQL tại đây .
Sử dụng RESTORE CHÍNH HÃNG, vd
RESTORE HEADERONLY FROM DISK = 'D:\whatever.bak'
Bạn sẽ nhận được rất nhiều cột, nhưng những cột quan tâm là SoftwareVersionMajor, SoftwareVersionMinor và SoftwareVersionBuild, sẽ cung cấp cho bạn số phiên bản của SQL Server. Trên hệ thống của chúng tôi, ví dụ, đây là 10, 0 và 4000, nghĩa là 10.0.4000 (2008 SP2).
Không chắc chắn điều gì xảy ra nếu bạn cố gắng thực hiện việc này với bản sao lưu quá cũ để được khôi phục trên phiên bản mà máy chủ đang chạy, tuy nhiên - bạn có thể gặp lỗi và không có thông tin (mặc dù bản thân nó ít nhất sẽ cung cấp một số manh mối về phiên bản đó là từ).
Đối với các tệp MDF hãy thử lệnh này:
dbcc checkprimaryfile ('c:\MyApp\AppData\foo.mdf', 2)
Nó sẽ ra 3 thuộc tính với các giá trị: Database name
, Database version
và Collation
.
Cú pháp theo sau (lệnh không có giấy tờ, do đó có thêm thông tin ở đây ):
KIỂM TRA DBCC ({'Tên tệp'} [, opt = {0 | 1 | 2 | 3}])
Tên tệp không là gì ngoài đường dẫn thực tế của tệp .mdf tệp dữ liệu chính của cơ sở dữ liệu SQL Server.
Opt = 0 - Xác minh xem tệp có phải là tệp Dữ liệu chính của Cơ sở dữ liệu SQL Server (.mdf) không.
Opt = 1 - Trả về Tên cơ sở dữ liệu, Kích thước, Kích thước tối đa, Tăng trưởng, Trạng thái và Đường dẫn của tất cả các tệp được liên kết với cơ sở dữ liệu.
Opt = 2 - Trả về tên cơ sở dữ liệu, phiên bản và thông tin đối chiếu.
Opt = 3 - Trả về Tên, Trạng thái và Đường dẫn của tất cả các tệp được liên kết với cơ sở dữ liệu.
Câu hỏi hay! Tôi không tin như vậy, ngoài quy trình thử và sai - nói - cố gắng khôi phục tệp sao lưu SQL Server 2008 R2 vào SQL Server 2005. Rõ ràng, điều đó sẽ không hoạt động. Tôi không thể nhớ liệu sử dụng Management Studio - và nhấp vào nút nội dung để khôi phục - sẽ cho bạn thấy bất cứ điều gì thú vị.
Tôi chưa thử chúng, nhưng có thể một công cụ của bên thứ ba như Khôi phục ảo của Red Gate sẽ cho bạn biết - nó cho phép bạn xem cơ sở dữ liệu "bên trong" tệp sao lưu. http://www.red-gate.com/products/dba/sql-virtual-restore/
Bạn có thể tìm thấy điều này bằng cách sử dụng thông tin trong trang khởi động của cơ sở dữ liệu. Tôi đã viết về điều này tại http://sankarreddy.com/2010/05/database-iternal-version-create-version-and-civerse-version/
Cách tốt nhất tôi từng thấy để làm điều này được lượm lặt từ bài đăng này trên các diễn đàn MSDN của SQL Server.
Về cơ bản nó liên quan đến việc vào tệp và kiểm tra trang khởi động của tệp mdf.