有没有办法确定用于创buildMDF或BAK文件的SQL Server的版本?

我有一个存储为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 nameDatabase versionCollation

语法如下(该命令是无证的,因此更多信息在这里 ):

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文件的启动页面。