Answers:
您可以通过查看偏移量0x12064处的两个字节来确定数据库的主MDF文件的版本。请参阅如何确定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只是SQL Server数据库主数据文件.mdf文件的实际路径。
Opt = 0-验证文件是否为SQL Server数据库主数据文件(.mdf)。
Opt = 1-返回与数据库关联的所有文件的数据库名称,大小,最大大小,增长,状态和路径。
Opt = 2-返回数据库名称,版本和排序规则信息。
Opt = 3-返回与数据库关联的所有文件的名称,状态和路径。
好问题!我不这么认为,除了尝试和尝试过程之外(例如,尝试将SQL Server 2008 R2备份文件还原到SQL Server 2005)。显然,这是行不通的。我不记得使用了Management Studio并单击内容按钮进行还原是否会显示任何有趣的内容。
我还没有尝试过,但是像Red Gate的Virtual Restore这样的第三方工具可能会告诉您-它使您可以在备份文件“内部”查看数据库。 http://www.red-gate.com/products/dba/sql-virtual-restore/