Existe-t-il un moyen de savoir si le niveau de compatibilité a changé dans mon SQL SERVER DB 2014?
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:
Ou en lisant le fichier journal des erreurs (actuel) avec xp_readerrorlog
:
EXEC sp_readerrorlog 0, 1, 'COMPATIBILITY_LEVEL'
Résultat
Remplacez le premier paramètre de xp_readerrorlog
à 1 pour lire le deuxième fichier journal des erreurs, 2 pour le troisième fichier, ....
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.