将SQL Server中的兼容模式从100更改为110的含义


17

我有一个Mydatabase在SQL Server 2008 R2中创建的数据库。我已升级到SQL Server 2012。

我正在尝试执行以下查询以计算百分位数

select Distinct [KEY],PERCENTILE_CONT(0.25)  within group(order by EachPrice)
OVER(Partition By [KEY]) As Q1,PERCENTILE_CONT(0.50)  within group(order by EachPrice)
OVER(Partition By [KEY]) As Q2,
PERCENTILE_CONT(0.75)  within group(order by EachPrice)
OVER(Partition By [KEY]) As Q3,
PERCENTILE_CONT(1)  within group(order by EachPrice)
OVER(Partition By [KEY]) As Q4
from Mydatabase

但我得到一个错误,指出

消息10762,级别15,状态1,第1
行在当前兼容模式下,不允许PERCENTILE_CONT函数。仅允许在110模式或更高模式下使用。

  1. 可以将兼容模式更改为110吗?
  2. 将兼容模式从100更改为110有什么含义?

请指教


OMFG!“ SQL Server 2014对创建和优化查询计划的组件进行了重大改进。” 但是,`我在过去的三年中并没有从中受益,因为我compatibility_level仍然是100 岁。太棒了!
Simon_Weaver

Answers:


9

看一下以下链接:

ALTER DATABASE兼容性级别

向下滚动,您将看到“较低的兼容性级别和110级之间的区别”部分,并确定其中任何一项是否会影响您。如果不是,则将级别更改为110。


3
这将需要几个小时。现在,有一种工具可以为您执行此操作:Microsoft 数据迁移助手
MGOwen '17

5

还有一个升级顾问,可以帮助您识别数据库中在更改兼容性级别时可能引起问题的任何内容(基本上是@steoleary建议的半自动方式,可以减少丢失任何内容的机会)。


显然,数据迁移助手现已取代了升级顾问。
MGOwen

是的,这是2012年,所以他们更改了名称和/或功能并不感到惊讶。我已经很长时间没有升级数据库了,因为这些天我很少与数据库有太多关系-甚至不确定最新版本是什么!
史蒂夫·佩蒂弗

4

Microsoft 数据迁移助手可帮助您快速轻松地找到可能阻止升级或使升级复杂化的​​任何问题。

如果它没有发现问题(或者确实存在,并且您已经解决了问题),则只需一次运行以下命令即可升级:

USE master
go
ALTER DATABASE [yourdatabasesname]  SET SINGLE_USER     WITH ROLLBACK IMMEDIATE
go
ALTER DATABASE [yourdatabasesname]  SET COMPATIBILITY_LEVEL = 110    -- 130=SQL Server 2016, 120=2014, 110=2012
go
ALTER DATABASE [yourdatabasesname]  SET MULTI_USER
go
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.