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のアップグレードに関するループから脱出しました。最新バージョンが何であるかさえわかりません。
スティーブペティファー

3

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.