我有一个存储为MDF文件的SQL Server数据库的本地副本。 有没有办法告诉哪个版本的SQL Server被用来创build该文件?
您可以通过查看偏移量为0x12064的两个字节来确定数据库的主MDF文件的版本。 请参阅如何确定MDF文件的数据库版本 。
在.bak文件中,低位字节是0xEAC,高位是0xEAD。
您可以在这里findMS SQL的大多数内部数据库版本号。
使用RESTORE HEADERONLY,例如
RESTORE HEADERONLY FROM DISK = 'D:\whatever.bak'
你会得到很多列,但感兴趣的是SoftwareVersionMajor,SoftwareVersionMinor和SoftwareVersionBuild,它们应该给你SQL Server的版本号。 例如,在我们的系统中,这些是10,0和4000,意思是10.0.4000(2008 SP2)。
不知道会发生什么情况,如果你尝试使用太旧的备份来完成这个工作,那么服务器运行的版本将不能恢复 – 但是,你可能会得到一个错误,但没有任何信息(尽pipe这本身至less可以提供一些线索版本来自)。
对于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文件的实际path。
Opt = 0 – validation文件是否是SQL Server数据库主数据文件(.mdf)。
Opt = 1 – 返回与数据库关联的所有文件的数据库名称,大小,最大大小,增长,状态和path。
Opt = 2 – 返回数据库名称,版本和归类信息。
Opt = 3 – 返回与数据库关联的所有文件的名称,状态和path。
好问题! 我不这么认为,除了尝试将SQL Server 2008 R2备份文件还原到SQL Server 2005之外的尝试和错误过程。显然,这是行不通的。 我不记得是否使用了Management Studio(点击内容button进行恢复),它会告诉你任何有趣的事情。
我还没有尝试过,但是Red Gate的虚拟还原等第三方工具可能会告诉你 – 它允许你在备份文件的“内部”查看数据库。 http://www.red-gate.com/products/dba/sql-virtual-restore/
您可以使用数据库启动页面中的信息来find它。 我写在http://sankarreddy.com/2010/05/database-internal-version-create-version-and-current-version/
我见过的最好的方法是从SQL Server MSDN论坛上的这篇文章中收集到的。
基本上它涉及进入文件并检查mdf文件的启动页面。