代码之家  ›  专栏  ›  技术社区  ›  Laughing Vergil

还原SQL Server 2008(兼容性100)DB的备份将在2012 Server上创建SQL Server 2005 DB

  •  1
  • Laughing Vergil  · 技术社区  · 6 年前

    从中列出时 sys.databases ,这些数据库报告其兼容性为SQL Server 2008/R2(兼容性级别100),如下所示:

    MyDB_Name               100 SQL Server 2008/R2
    MyDB_Name_MirrorTables  100 SQL Server 2008/R2
    MyDB_Name_Reporting     100 SQL Server 2008/R2
    

    作为此查询的输出:

    select 
        name, compatibility_level , version_name = 
        case compatibility_level
            when 90  then 'SQL Server 2005'
            when 100 then 'SQL Server 2008/R2'
            when 110 then 'SQL Server 2012'
            else 'unknown - ' + convert(varchar(10), compatibility_level)
        end
    from sys.databases
    

    从服务器上其他用户数据库的备份中恢复正确恢复为兼容级别100。但是,从备份中恢复这四个数据库将恢复为兼容级别90(SQLServer2005)。只有这四个数据库似乎有这个问题。

    为了测试这一点,我对其中一个数据库进行了手动备份,只提供了以下选项 INIT, SKIP 明确规定。然后,我将此备份还原到SQL Server 2012服务器。恢复后,DB经历了从版本655到706的升级过程。没有其他不寻常的事情发生。

    但是,在SQL Server 2012上使用与上述相同的代码测试兼容性级别时,返回的值如下:

    bwh_MyDB_Name_MirrorTables  90  SQL Server 2005
    

    此外,当以其他名称还原到原始的SQL Server 2008 DB Server时,数据库仍会返回DB版本的SQL Server 2005(兼容级别90)。

    最后,尽管DB报告为sqlservre2008,但当从DB2链接服务器返回日期列时,查询返回 datetime Date 数据类型,它应该在SQLServer2008/R2数据库中返回。

    我不知道下一步该去哪里。date/datetime问题是研究这个问题的最初诱因,但它已经成为一个更大的难题。显然,我可以简单地将传入的数据转换为 date

    0 回复  |  直到 6 年前