特定のインスタンスで正しい互換性レベルにないデータベースをチェックする必要があります。たとえば、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
コメントで述べたように、関連情報を取得するには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で作業している場合を除いて、上記は正常に機能します。あなたはそれについてもっと読むことができます ここ 。
上記がお役に立てば幸いです。