web-dev-qa-db-ja.com

SQLサーバーのバージョンに基づくデータベースの互換性レベル

特定のインスタンスで正しい互換性レベルにないデータベースをチェックする必要があります。たとえば、SQL Server 2016インスタンスで、互換性レベル130にないデータベースがある場合は、それらを一覧表示する必要があります。同様に、SQL Server 2017では、互換性レベルが140でないデータベースがある場合は、それらを一覧表示する必要があります。

以下のスクリプトを見てください

SELECT name as 'Database name',
       compatibility_level AS 'Compatibility level',
       @@VERSION as 'SQL Version'          
FROM   sys.databases S
1
Teja

コメントで述べたように、関連情報を取得するにはsys.databasesにクエリを実行する必要があります。

以下は簡単なクエリです。

select name from sys.databases
where compatibility_level not in(130) -- you can hardcode this based on version of SQL server
and database_id > 4

それを一般化したい場合は、以下のクエリを使用できます。

select name from sys.databases
where compatibility_level not in(select compatibility_level from sys.databases where database_id = 1)
and database_id > 4

DBアップグレード(インプレース)が行われたシナリオ、またはAzureで作業している場合を除いて、上記は正常に機能します。あなたはそれについてもっと読むことができます ここ

上記がお役に立てば幸いです。

2