SQL Server에서 호환성 모드가 100에서 110으로 변경 될 때의 영향


16

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

조언하십시오


OMFG! "SQL Server 2014에는 쿼리 계획을 만들고 최적화하는 구성 요소가 크게 향상되었습니다." 그러나`나는 compatibility_level여전히 100 세이기 때문에 지난 3 년 동안 전혀 이익을 얻지 못했습니다 . 환상적인!
Simon_Weaver

답변:


9

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

ALTER DATABASE 호환성 수준

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


3
몇 시간이 걸릴 것입니다. 현재이를위한 도구가 있습니다 : Microsoft Data Migration Assistant
MGOwen

5

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


Data Migration Assistant 는 이제 Upgrade Advisor를 대체했습니다.
MGOwen

예, 2012 년이되었으므로 이름 및 / 또는 기능이 변경되었다는 사실에 놀라지 않았습니다. 요즘 DB와 관련이 거의 없기 때문에 DB 업그레이드에 많은 시간을 할애하지 못했습니다. 최신 버전이 무엇인지조차 확실하지 않습니다!
Steve Pettifer

3

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.