将 SQL Server 中的兼容模式从 100 更改为 110 的影响

Shi*_*iva 19 sql-server-2012 compatibility-level

我有一个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
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误说明

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

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

请指教

ste*_*ary 9

看看下面的链接:

ALTER DATABASE 兼容级别

向下滚动,您将看到“较低兼容性级别与级别 110 之间的差异”部分,并确定这些项目中的任何一项是否会影响您。如果没有,那么只需将级别更改为 110。

  • 那需要几个小时。现在有一个工具可以为您执行此操作:Microsoft [数据迁移助手](https://www.microsoft.com/en-us/download/details.aspx?id=53595) (3认同)

MGO*_*wen 6

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
Run Code Online (Sandbox Code Playgroud)


Ste*_*fer 5

还有升级顾问可以帮助您识别数据库中可能在更改兼容性级别时导致问题的任何内容(基本上是一种半自动的方式来执行@steoleary 建议的操作,从而减少您遗漏任何内容的机会)。