web-dev-qa-db-ja.com

SQL Serverの互換モードを100から110に変更した場合の影響

SQL Server 2008 R2でデータベースMydatabaseを作成しました。 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に変更するとどうなりますか?

アドバイスを下さい

17
Shiva

次のリンクをご覧ください。

ALTER DATABASE互換性レベル

下にスクロールすると、「下位互換性レベルとレベル110の違い」というセクションが表示され、これらの項目のいずれかが影響を与えるかどうかがわかります。そうでない場合は、レベルを110に変更します。

9
steoleary

pgrade Advisor もあります。これは、互換性レベルを変更するときに問題を引き起こす可能性があるDB内の何かを識別するのに役立ちます(基本的に、@ steolearyが提案することを行う半自動化された方法で、あなたは何かが不足しています)。

5
Steve Pettifer

Microsoft Data Migration Assistant を使用すると、アップグレードを妨げたり複雑にしたりする可能性のある問題をすばやく簡単に見つけることができます。

問題が見つからない場合(または問題があり、対処済みの場合)、これらのコマンドを1つずつ実行するだけでアップグレードできます。

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
5
MGOwen