还原SQL Server 2008(相容性100)资料库的备份会在2012伺服器上建立SQL Server 2005资料库

时间:2018-11-12 19:51:46

标签: sql-server sql-server-2008 sql-server-2012 version restore

我们在SQL Server 2008(不是SP2-不要问我为什么)数据库服务器上有四个不同的数据库,它们都有一个奇怪的问题。

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

从服务器上其他用户DB的备份还原可正确还原为兼容性级别100。但是,从备份中恢复这四个DB则还原为兼容性级别90(SQL Server 2005)。只有这四个DB似乎有此问题。

要对此进行测试,我仅使用指定的INIT, SKIP手动备份了其中一个数据库。然后,我将此备份还原到SQL Server 2012服务器。恢复后,数据库就经历了从版本655到706的升级过程。没有其他异常。

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

bwh_MyDB_Name_MirrorTables  90  SQL Server 2005

此外,当以不同的名称还原到原始SQL Server 2008 DB服务器时,数据库仍会为该数据库版本返回SQL Server 2005(兼容级别90)。

最后,尽管数据库报告为SQL Servre 2008,但从DB2链接服务器返回日期列时,查询将返回datetime(时间为00:00:00.000)。在SQL Server 2012中运行查询,该值以Date数据类型返回,这是在SQL Server 2008 / R2数据库中应返回的值。

我茫然不知所措。日期/日期时间问题是引发此问题的最初诱因,但它已经成为一个更大的难题。显然,我可以简单地将传入的数据作为date值进行转换(确实有效,很奇怪),但是这并不能解释RESTORE将数据库返回兼容级别90,或者DB2查询返回了日期时间。来自链接服务器的日期。任何建议都会很高兴被接受。

0 个答案:

没有答案