从中列出时
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