SQL SERVER DB 2014で互換性レベルが変更されたかどうかを知る方法はありますか?
データベースの現在の互換性レベルを知るには、次のコマンドを実行します。
SELECT name,compatibility_level
FROM sys.databases
WHERE name = 'DatabaseName';
私のTESTデータベースの結果:
name compatibility_level
TEST 140
たとえば、次のコマンドを使用して互換性レベルが変更された場合:
ALTER DATABASE TEST SET COMPATIBILITY_LEVEL = 120;
または、xp_readerrorlog
を使用して(現在の)エラーログファイルを読み取る:
EXEC sp_readerrorlog 0, 1, 'COMPATIBILITY_LEVEL'
結果
xp_readerrorlog
の最初のパラメータを1に置き換えて、2番目のエラーログファイルを読み取ります。3番目のファイルは2です..。
さらに、次のステートメントを実行して、データベースがダウンレベルのクエリオプティマイザー(LEGACY_CARDINALITY_ESTIMATOR)で実行されていないことを確認できます。
use [yourDB]
GO
select * from sys.database_scoped_configurations
これにより、レガシーカーディナリティエスティメーターで実行されている特定のデータベースのSQL Server 2014インスタンスで次の結果セットが得られます。
configuration_id | name | value | value_for_secondary
------------------|-------------------------------|-------|---------------------
1 | MAXDOP | 0 | NULL
2 | LEGACY_CARDINALITY_ESTIMATION | 1 | NULL
3 | PARAMETER_SNIFFING | 1 | NULL
4 | QUERY_OPTIMIZER_HOTFIXES | 0 | NULL
インスタンスを現在の互換性レベル120(SQL Server 2014の場合)で実行できるため、この情報を回答として追加しますが、データベースは古いカーディナリティエスティメータを引き続き使用します。これにより、使用の利点の一部が無効になります。データベースの新しいSQL Server 2014互換性レベル。