SQL Server에서 호환성 모드가 100에서 110으로 변경 될 때의 영향 As Q3, PERCENTILE_CONT(1) within group(order by

MydatabaseSQL 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으로 변경하면 어떤 의미가 있습니까?

조언하십시오



답변

다음 링크를 살펴보십시오.

ALTER DATABASE 호환성 수준

아래로 스크롤하면 “낮은 호환성 수준과 수준 110의 차이점”섹션이 표시되며 이러한 항목 중 어느 것이 귀하에게 영향을 미치는지 확인하십시오. 그렇지 않으면 레벨을 110으로 변경하십시오.


답변

또한 호환성 수준을 변경할 때 문제를 일으킬 수있는 DB의 모든 사항을 식별하는 데 도움이되는 업그레이드 관리자 도 있습니다 (기본적으로 @steoleary가 제안한 작업을 수행하는 반자동 방식으로 누락 가능성을 줄입니다).


답변

Microsoft Data Migration Assistant를 사용 하면 업그레이드를 방해하거나 복잡하게 만드는 문제를 빠르고 쉽게 찾을 수 있습니다.

문제가없는 경우 (또는 문제가 해결 된 경우) 한 번에 하나씩 다음 명령을 실행하여 간단히 업그레이드 할 수 있습니다.

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