У меня есть локальная копия базы данных SQL Server, хранящаяся в виде файла MDF. Есть ли способ сказать, какая версия SQL Server использовалась для создания этого файла?
У меня есть локальная копия базы данных SQL Server, хранящаяся в виде файла 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 Server (.mdf).
Opt = 1 - возвращает имя базы данных, размер, максимальный размер, рост, состояние и путь всех файлов, связанных с базой данных.
Opt = 2 - возвращает имя базы данных, версию и параметры сортировки.
Opt = 3 - возвращает имя, статус и путь всех файлов, связанных с базой данных.
Хороший вопрос! Я не верю в это, за исключением процесса проб и ошибок, скажем, попыток восстановления файла резервной копии SQL Server 2008 R2 на SQL Server 2005. Очевидно, что это не сработает. Я не могу вспомнить, показало ли использование Management Studio - и нажатие на кнопку содержимого для восстановления - что-нибудь интересное.
Я не пробовал их, но возможно, что сторонний инструмент, такой как Virtual Gate Restore, скажет вам - он позволяет вам просматривать базу данных «внутри» файла резервной копии. http://www.red-gate.com/products/dba/sql-virtual-restore/
Вы можете найти это, используя информацию на странице загрузки базы данных. Я писал об этом на http://sankarreddy.com/2010/05/database-internal-version-create-version-and-current-version/
Лучший способ, который я когда-либо видел, был найден в этом посте на форумах MSDN по SQL Server.
В основном это включает в себя вход в файл и изучение страницы загрузки файла mdf.