Dados espaciais – sys.dm_db_objects_disabled_on_compatibility_level_change

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

Lista os índices e restrições que serão desabilitados como resultado da alteração do nível de compatibilidade em SQL Server. Índices e restrições que contêm colunas computadas persistentes cujas expressões usam UDTs espaciais serão desabilitadas depois de atualizar ou alterar nível de compatibilidade. Use essa função de gerenciamento dinâmico para determinar o impacto de uma alteração no nível de compatibilidade.

Convenções de sintaxe de Transact-SQL

Sintaxe

sys.dm_db_objects_disabled_on_compatibility_level_change ( compatibility_level )   

Argumentos

compatibility_level
int que identifica o nível de compatibilidade que você planeja definir.

Tabela retornada

Nome da coluna Tipo de dados Descrição
class int 1 = restrições

7 = índices e heaps
class_desc nvarchar(60) OBJECT ou COLUMN para restrições

INDEX para índices e heaps
major_id int OBJECT ID de restrições

OBJECT ID da tabela que contém índices e heaps
minor_id int NULL para restrições

Index_id para índices e heaps
Dependência nvarchar(60) Descrição da dependência que está causando a desabilitação da restrição ou do índice. Os mesmos valores também são usados nos avisos que são lançados durante atualização. Os exemplos incluem o seguinte:

"space" para um intrínseco

"geometry" para um sistema UDT

"geography::Parse" para um método de um sistema UDT

Comentários gerais

Colunas computadas persistentes que usam algumas funções intrínsecas são desabilitadas quando o nível de compatibilidade é alterado. Além disso, colunas computadas persistentes que usam qualquer método de geometria ou geografia são desabilitadas quando um banco de dados é atualizado.

Que funções causam a desabilitação de colunas computadas persistentes?

Quando as funções a seguir são usadas na expressão de uma coluna computada persistente, elas causam a desabilitação de índices e restrições que fazem referência a essas colunas quando o nível de compatibilidade é alterado de 80 para 90:

  • IsNumeric

Quando as funções a seguir são usadas na expressão de uma coluna computada persistente, elas causam a desabilitação de índices e restrições que fazem referência a essas colunas quando o nível de compatibilidade é alterado de 100 para 110 ou 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

  • Geografia:: Analisar

  • Geography:: Reduce

Comportamento dos objetos desabilitados

Índices

Se o índice clusterizado estiver desabilitado ou se um índice não clusterizado for forçado, o seguinte erro será gerado: "O processador de consultas não poderá produzir um plano porque o índice '%.*ls' na tabela ou exibição '%.*ls' está desabilitado." Para reabilitar esses objetos, recompile os índices após a atualização chamando ALTER INDEX ON ... REBUILD.

Heaps

Se uma tabela com um heap desabilitado for usada, o erro a seguir será lançado. Para reabilitar esses objetos, recompile após a atualização chamando ALTER INDEX ALL ON ... REBUILD.

// 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  

Se você tentar recompilar o heap durante uma operação online, um erro será gerado.

Verificar restrições e chaves estrangeiras

Restrições de verificação desabilitadas e chave estrangeiras não lançam um erro. Porém, as restrições não são impostas quando linhas são modificadas. Para reabilitar esses objetos, verifique as restrições após a atualização chamando ALTER TABLE ... RESTRIÇÃO DE VERIFICAÇÃO.

Colunas computadas persistentes

Como não é possível desabilitar uma única coluna, a tabela inteira é desabilitada com a desabilitação do índice clusterizado ou heap.

Segurança

Permissões

Exige a permissão VIEW DATABASE STATE.

Permissões para SQL Server 2022 e posterior

Requer a permissão VIEW DATABASE PERFORMANCE STATE no banco de dados.

Exemplo

O exemplo a seguir mostra uma consulta em sys.dm_db_objects_disabled_on_compatibility_level_change para localizar os objetos afetados alterando o nível de compatibilidade para 120.

SELECT * FROM sys.dm_db_objects_disabled_on_compatibility_level_change(120);  
GO