Datos espaciales: sys.dm_db_objects_disabled_on_compatibility_level_change

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Enumera los índices y restricciones que se deshabilitarán como resultado de cambiar el nivel de compatibilidad en SQL Server. Los índices y las restricciones que contienen columnas calculadas persistentes cuyas expresiones usan UDT espaciales se deshabilitarán después de actualizar o cambiar el nivel de compatibilidad. Use esta función de administración dinámica para determinar el impacto de un cambio en el nivel de compatibilidad.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sys.dm_db_objects_disabled_on_compatibility_level_change ( compatibility_level )   

Argumentos

compatibility_level
int que identifica el nivel de compatibilidad que tiene previsto establecer.

Tabla devuelta

Nombre de la columna Tipo de datos Descripción
class int 1 = restricciones

7 = índices y montones
class_desc nvarchar(60) OBJECT o COLUMN para restricciones

INDEX para índices y montones
major_id int OBJECT ID de restricciones

OBJECT ID de la tabla que contiene índices y montones
minor_id int NULL para restricciones

Index_id para índices y montones
Dependencia nvarchar(60) Descripción de la dependencia que está haciendo que se deshabilite la restricción o el índice. Los mismos valores también se usan en las advertencias que se producen durante la actualización. Entre otros, se incluyen los siguientes ejemplos:

“space” para intrínseca

“geometry” para UDT del sistema

"geography::Parse" para un método de UDT del sistema

Notas generales

Las columnas calculadas persistentes que usan algunas funciones intrínsecas se deshabilitan cuando se cambia el nivel de compatibilidad. Además, las columnas calculadas persistentes que emplean cualquier método Geometry o Geography se deshabilitan cuando se actualiza una base de datos.

¿Qué funciones hacen que se deshabiliten las columnas calculadas persistentes?

Cuando las siguientes funciones se usan en la expresión de una columna calculada persistente, hacen que los índices y las restricciones que hacen referencia a esas columnas se deshabiliten cuando el nivel de compatibilidad se cambie entre 80 y 90:

  • IsNumeric

Cuando las siguientes funciones se usan en la expresión de una columna calculada persistente, hacen que los índices y las restricciones que hacen referencia a esas columnas se deshabiliten cuando el nivel de compatibilidad se cambie entre 100 y 110 o superior:

  • 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:: Análisis

  • Geography:: Reduce

Comportamiento de los objetos deshabilitados

Índices

Si el índice clúster está deshabilitado o si se fuerza un índice no clúster, se produce el siguiente error: "El procesador de consultas no puede generar un plan porque el índice "%.*ls" en la tabla o vista "%.*ls" está deshabilitado". Para volver a habilitar estos objetos, vuelva a generar los índices después de la actualización llamando a ALTER INDEX ON ... RECOMPILACIÓN.

Montones

Si se usa una tabla con un montón deshabilitado, se produce el siguiente error. Para volver a habilitar estos objetos, vuelva a generar después de la actualización llamando a ALTER INDEX ALL ON ... RECOMPILACIÓN.

// 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 intenta volver a generar el montón durante una operación en línea, se genera un error.

Restricciones CHECK y claves externas

Las restricciones CHECK y las claves externas deshabilitadas no generan ningún error. Sin embargo, las restricciones no se aplican cuando se modifican las filas. Para volver a habilitar estos objetos, compruebe las restricciones después de actualizar llamando a ALTER TABLE ... RESTRICCIÓN CHECK.

Columnas calculadas persistentes

Puesto que no es posible deshabilitar una sola columna, se deshabilita toda la tabla al deshabilitar el índice clúster o el montón.

Seguridad

Permisos

Necesita el permiso VIEW DATABASE STATE.

Permisos para SQL Server 2022 y versiones posteriores

Requiere el permiso VIEW DATABASE PERFORMANCE STATE en la base de datos.

Ejemplo

En el ejemplo siguiente se muestra una consulta en sys.dm_db_objects_disabled_on_compatibility_level_change para buscar los objetos afectados cambiando el nivel de compatibilidad a 120.

SELECT * FROM sys.dm_db_objects_disabled_on_compatibility_level_change(120);  
GO