SQL Server:升级后的数据库兼容性级别

时间:2019-03-12 19:24:41

标签: sql sql-server tsql compatibility-level

我们当前正在将几个SQL Server实例从SQL Server 2008 R2升级到SQL Server 2012。

这是一个临时解决方案(因为Microsoft EOL对2008 R2的支持即将推出)。

我注意到升级后,所有系统数据库EXCEPT master都为新的scala> case class Emp(id: Int, name: String, salary: Double) defined class Emp scala> val emp1 = Emp(1, "james", 13000.00) emp1: Emp = Emp(1,james,13000.0) scala> val emp2 = Emp(2, "michael", 12000.00) emp2: Emp = Emp(2,michael,12000.0) scala> val emp3 = Emp(3, "Ram", 15000.00) emp3: Emp = Emp(3,Ram,15000.0) scala> val empList = List(emp1,emp2,emp3) empList: List[Emp] = List(Emp(1,james,13000.0), Emp(2,michael,12000.0), Emp(3,Ram,15000.0)) // sort in descending order on the basis of salary. scala> empList.sortWith(_.salary > _.salary) (110)设置。

有人知道为什么compatibility_level没有在升级过程中得到新的[master]吗?

我知道我可以手动设置它,但是想知道为什么未将其默认设置为另一个系统数据库。

谢谢

enter image description here

1 个答案:

答案 0 :(得分:1)

根据SQL Server 2017文档,但是在SQL Server 2012中也可以观察到相同的行为:ALTER DATABASE (Transact-SQL) Compatibility Level

  

SQL Server 2017(14.x)在以下情况下应具有以下行为   数据库已附加或还原,并且就地升级后

     
      
  • 如果升级前用户数据库的兼容性级别为100或更高,则升级后保持不变。
  •   
  • 如果用户数据库的兼容性级别在升级之前为90,则在升级的数据库中,兼容性级别设置为   100,这是SQL Server支持的最低兼容性级别   2017(14.x)。
  •   
  • 升级后,tempdb,model,msdb和Resource数据库的兼容性级别设置为当前兼容性级别
  •   
  • 主系统数据库r 建立了升级之前的兼容性级别。
  •   

所以,这是设计使然。