Données spatiales - sys.dm_db_objects_disabled_on_compatibility_level_change

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Répertorie les index et les 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. En voici quelques exemples :

« 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 peut pas produire de plan, car l’index '%.*ls' sur la table ou la vue '%.*ls' est désactivé. » Pour réactiver ces objets, reconstruisez 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, reconstruisez 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.

Contraintes de validation et 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

Requiert l'autorisation VIEW DATABASE STATE.

Autorisations pour SQL Server 2022 et versions ultérieures

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 impactés par la modification du niveau de compatibilité sur 120.

SELECT * FROM sys.dm_db_objects_disabled_on_compatibility_level_change(120);  
GO