none
如何根据数据库备份文件获取数据库实例的版本信息? RRS feed

  • 问题

  • 假设有多个数据库备份文件,并且他们是从不同版本的数据库备份得到的。而高版本的数据是不能被还原到低版本数据库实例中去的。这种情况下,怎么通过现有的数据库备份文件去区分他们的各自版本信息,从而将他们正确地还原到对应版本的数据库实例?
    2011年8月8日 4:25
    版主

答案

  • 下面的例子是使用RESTORE HEADREONLY,获取对应备份文件的数据库信息。

    RESTORE HEADERONLY 
    FROM DISK = 'D:\Workspace\SQLServer\Backups\AdventureWorks.bak'; 
    GO
    
    


    如果执行成功,将会得到下面这条记录。由于记录比较长,为了方便查看,我将它分割成多条。
    1

    2
    3
    4
    5
    6

    下面是关于几个重要字段的说明:

    BackupType:备份类型(1-完全备份;2-日志备份;5-差异备份;)
    Compressed:备份文件是否压缩(0-否;1-是;)
    DatabaseName:从其创建备份的数据库名称
    DatabaseVersion:从其创建备份的数据库的版本
    SoftwareVersionMajor/SoftwareVersionMinor/SoftwareVersionBuild:从其创建备份的SQL Server 的版本
    RecoveryModel: 数据库恢复模式(其中之一:FULL,BULK-LOGGED,SIMPLE)

    方法一,根据DatabaseVersion字段可以得到数据库的版本信息,从而知道以下的对应关系:

    • 515 <=> SQL Server 7.0
    • 539 <=> SQL Server 2000
    • 611/612 <=> SQL Server 2005
    • 655 <=> SQL Server 2008
    • 661 <=> SQL Server 2008 R2


    方法二,根据字段SoftwareVersionMajor, SoftwareVersionMinor, and SoftwareVersionBuild信息,将他们串联起来:SoftwareVersionMajor.SoftwareVersionMinor.SoftwareVersionBuild得到一个值,从而找到对应的SQL Server 版本信息,如10.50.1777. 可以通过下面这个链接的信息,将这个值对应到某一个具体的SQL Server 版本信息。http://www.sqlsecurity.com/FAQs/SQLServerVersionDatabase/tabid/63/Default.aspx

    最后,根据方法一,我们可以知道上面例子中的备份文件是从SQL Server 2008 R2(661)数据库备份得到的。根据方法二,我们可以知道这个数据库实例的具体版本信息是SQL Server 2008 R2 CU7(10.50.1777).



    2011年8月8日 4:39
    版主