web-dev-qa-db-ja.com

SQL Serverの互換性レベル

SQL SERVER DB 2014で互換性レベルが変更されたかどうかを知る方法はありますか?

5
giantLincecum

データベースの現在の互換性レベルを知るには、次のコマンドを実行します。

SELECT name,compatibility_level 
FROM sys.databases 
WHERE name = 'DatabaseName';

私のTESTデータベースの結果:

name    compatibility_level
TEST    140

たとえば、次のコマンドを使用して互換性レベルが変更された場合:

ALTER DATABASE TEST SET COMPATIBILITY_LEVEL = 120;

SQLサーバーのエラーログで発生した日時を確認できます: enter image description here

enter image description here

または、xp_readerrorlogを使用して(現在の)エラーログファイルを読み取る:

EXEC sp_readerrorlog 0, 1, 'COMPATIBILITY_LEVEL' 

結果

enter image description here

xp_readerrorlogの最初のパラメータを1に置き換えて、2番目のエラーログファイルを読み取ります。3番目のファイルは2です..。

10
Randi Vertongen

さらに、次のステートメントを実行して、データベースがダウンレベルのクエリオプティマイザー(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互換性レベル。

参考資料

4