web-dev-qa-db-fra.com

Niveau de compatibilité de SQL Server

Existe-t-il un moyen de savoir si le niveau de compatibilité a changé dans mon SQL SERVER DB 2014?

5
giantLincecum

Pour connaître le niveau de compatibilité actuel de votre base de données, vous pouvez exécuter:

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

Résultat pour ma base de données TEST:

name    compatibility_level
TEST    140

Si le niveau de compatibilité change, par exemple avec la commande:

ALTER DATABASE TEST SET COMPATIBILITY_LEVEL = 120;

Vous pouvez trouver la date et l'heure qui se sont produites dans le journal des erreurs du serveur SQL: enter image description here

enter image description here

Ou en lisant le fichier journal des erreurs (actuel) avec xp_readerrorlog:

EXEC sp_readerrorlog 0, 1, 'COMPATIBILITY_LEVEL' 

Résultat

enter image description here

Remplacez le premier paramètre de xp_readerrorlog à 1 pour lire le deuxième fichier journal des erreurs, 2 pour le troisième fichier, ....

10
Randi Vertongen

En outre, vous pouvez vérifier que votre base de données ne fonctionne pas avec l'Optimiseur de requête de niveau inférieur (LEGACY_CARDINALITY_ESTIMATOR) en exécutant l'instruction suivante:

use [yourDB]
GO
select * from sys.database_scoped_configurations

Cela vous donnera le jeu de résultats suivant sur une instance SQL Server 2014 pour une base de données donnée qui s'exécute avec l'estimateur de cardinalité hérité:

  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         

J'ajoute ces informations comme réponse, car vous pouvez faire fonctionner l'instance avec le niveau de compatibilité actuel de 120 (pour SQL Server 2014), mais la base de données utilisera toujours l'ancien estimateur de cardinalité, ce qui annule certains des avantages de l'utilisation le nouveau niveau de compatibilité SQL Server 2014 pour vos bases de données.

Matériel de référence

4
John aka hot2use