Données spatiales - sys.dm_db_objects_disabled_on_compatibility_level_change
S’applique à : SQL ServerAzure SQL Database Azure SQL Managed Instance
Répertorie les index et contraintes qui seront désactivés en raison de la modification du niveau de compatibilité dans SQL Server. Les index et les contraintes qui contiennent des colonnes calculées persistantes dont les expressions utilisent des types définis par l'utilisateur spatiaux sont désactivés après une mise à niveau ou une modification du niveau de compatibilité. Utilisez cette fonction de gestion dynamique pour déterminer l'impact d'un changement de niveau de compatibilité.
Conventions de la syntaxe Transact-SQL
Syntaxe
sys.dm_db_objects_disabled_on_compatibility_level_change ( compatibility_level )
Arguments
compatibility_level
int qui identifie le niveau de compatibilité que vous envisagez de définir.
Table retournée
Nom de la colonne | Type de données | Description |
---|---|---|
class | int | 1 = contraintes 7 = index et segments |
class_desc | nvarchar(60) | OBJECT ou COLUMN pour les contraintes INDEX pour les index et les segments |
major_id | int | OBJECT ID des contraintes OBJECT ID de la table qui contient des index et des segments |
minor_id | int | NULL pour les contraintes Index_id pour les index et les segments |
dépendance | nvarchar(60) | Description de la dépendance qui provoque la désactivation de la contrainte ou de l'index. Les mêmes valeurs sont également utilisées dans les avertissements générés pendant la mise à niveau. Les exemples incluent ce qui suit : « space » pour un type intrinsèque « geometry » pour un type défini par l'utilisateur système « geography::Parse » pour une méthode d'un type défini par l'utilisateur système |
Remarques d'ordre général
Les colonnes calculées persistantes qui utilisent des fonctions intrinsèques sont désactivées lorsque le niveau de compatibilité est modifié. En outre, les colonnes calculées persistantes qui utilisent une méthode de type geometry ou geography sont désactivées lorsqu'une base de données est mise à niveau.
Quelles sont les fonctions qui provoquent la désactivation des colonnes calculées persistantes ?
Lorsque les fonctions suivantes sont utilisées dans l'expression d'une colonne calculée persistante, elles entraînent la désactivation des index et des contraintes qui font référence à ces colonnes lorsque le niveau de compatibilité est modifié de 80 à 90 :
- IsNumeric
Lorsque les fonctions suivantes sont utilisées dans l'expression d'une colonne calculée persistante, elles entraînent la désactivation des index et des contraintes qui font référence à ces colonnes lorsque le niveau de compatibilité est modifié de 100 à 110 ou plus :
Soundex
Geography :: GeomFromGML
Geography :: STGeomFromText
Geography :: STLineFromText
Geography :: STPolyFromText
Geography :: STMPointFromText
Geography :: STMLineFromText
Geography :: STMPolyFromText
Geography :: STGeomCollFromText
Geography :: STGeomFromWKB
Geography :: STLineFromWKB
Geography :: STPolyFromWKB
Geography :: STMPointFromWKB
Geography :: STMLineFromWKB
Geography :: STMPolyFromWKB
Geography :: STUnion
Geography :: STIntersection
Geography :: STDifference
Geography :: STSymDifference
Geography :: STBuffer
Geography :: BufferWithTolerance
Geography :: Analyse
Geography :: Reduce
Comportement des objets désactivés
Index
Si l’index cluster est désactivé ou si un index non cluster est forcé, l’erreur suivante est générée : « Le processeur de requêtes ne parvient pas à produire un plan, car l’index '%.*ls' sur la table ou la vue '%.*ls' est désactivé. » Pour réactiver ces objets, régénérez les index après la mise à niveau en appelant ALTER INDEX ON ... REGÉNÉRER.
Tas
Si une table avec un segment désactivé est utilisée, l'erreur suivante est levée. Pour réactiver ces objets, regénérer après la mise à niveau en appelant ALTER INDEX ALL ON ... REGÉNÉRER.
// ErrorNumber: 8674
// ErrorSeverity: EX_USER
// ErrorFormat: The query processor is unable to produce a plan because the table or view '%.*ls' is disabled.
// ErrorCause: The table has a disabled heap.
// ErrorCorrectiveAction: Rebuild the disabled heap to enable it.
// ErrorInserts: table or view name
// ErrorOwner: mtintor
// ErrorFirstProduct: SQL11
Si vous essayez de reconstruire le tas pendant une opération en ligne, une erreur est générée.
Vérifier les contraintes et les clés étrangères
Les contraintes de validation et les clés étrangères désactivées ne déclenchent pas d'erreur. Toutefois, les contraintes ne sont pas appliquées lorsque des lignes sont modifiées. Pour réactiver ces objets, vérifiez les contraintes après la mise à niveau en appelant ALTER TABLE ... CONTRAINTE CHECK.
Colonnes calculées persistantes
Comme il est impossible de désactiver une colonne unique, la table entière est désactivée grâce à la désactivation de l'index cluster ou du segment.
Sécurité
autorisations
Nécessite l’autorisation VIEW DATABASE STATE.
Autorisations pour SQL Server 2022 (et versions plus récentes)
Nécessite l’autorisation VIEW DATABASE PERFORMANCE STATE sur la base de données.
Exemple
L’exemple suivant montre une requête sur sys.dm_db_objects_disabled_on_compatibility_level_change pour rechercher les objets affectés par la modification du niveau de compatibilité par 120.
SELECT * FROM sys.dm_db_objects_disabled_on_compatibility_level_change(120);
GO