Назад | Перейти на главную страницу

Есть ли способ определить версию SQL Server, которая использовалась для создания файла MDF или BAK?

У меня есть локальная копия базы данных SQL Server, хранящаяся в виде файла MDF. Есть ли способ узнать, какая версия SQL Server использовалась для создания этого файла?

Используйте RESTORE HEADERONLY, например

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

Вы получите много столбцов, но наиболее интересными являются SoftwareVersionMajor, SoftwareVersionMinor и SoftwareVersionBuild, которые должны дать вам номер версии SQL Server. В нашей системе, например, это 10, 0 и 4000, что означает 10.0.4000 (2008 SP2).

Не уверен, что произойдет, если вы попытаетесь сделать это с резервной копией, которая слишком старая для восстановления в версии, на которой работает сервер, однако - вы можете просто получить сообщение об ошибке и никакой информации (хотя это само по себе, по крайней мере, даст некоторые подсказки. версия от).

Вы можете определить версию основного файла MDF базы данных, посмотрев на два байта по смещению 0x12064. Видеть Как определить версию базы данных файла MDF.

В .bak файлы младший байт - 0xEAC, а старший - 0xEAD.

Вы можете найти большинство внутренних номеров версий базы данных для MS SQL Вот.

Для файлов 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 Server (.mdf).

Opt = 1 - возвращает имя базы данных, размер, максимальный размер, рост, статус и путь всех файлов, связанных с базой данных.

Opt = 2 - возвращает имя базы данных, версию и сведения о сопоставлении.

Opt = 3 - возвращает имя, статус и путь всех файлов, связанных с базой данных.

Хороший вопрос! Я в это не верю, если не считать процесса проб и ошибок, скажем, попытки восстановить файл резервной копии SQL Server 2008 R2 на SQL Server 2005. Очевидно, это не сработает. Я не могу вспомнить, покажет ли использование Management 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.