Partilhar via


Dados Espaciais - sys.dm_db_objects_disabled_on_compatibility_level_change

Aplica-se a: SQL ServerBanco de Dados SQL do Azure Instâ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 no 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

  • Geografia:: GeomFromGML

  • Geografia:: STGeomFromText

  • Geografia:: STLineFromText

  • Geografia:: STPolyFromText

  • Geografia:: STMPointFromText

  • Geografia:: STMLineFromText

  • Geografia:: STMPolyFromText

  • Geografia:: STGeomCollFromText

  • Geografia:: STGeomFromWKB

  • Geografia:: STLineFromWKB

  • Geografia:: STPolyFromWKB

  • Geografia:: STMPointFromWKB

  • Geografia:: STMLineFromWKB

  • Geografia:: STMPolyFromWKB

  • Geografia:: STUnion

  • Geografia:: STIntersection

  • Geografia:: STDifference

  • Geografia:: STSymDifference

  • Geografia:: STBuffer

  • Geografia:: BufferWithTolerance

  • Geografia:: Analisar

  • Geografia:: Reduzir

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 pode 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 ... RECONSTRUIR.

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 ... RECONSTRUIR.

// 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 reconstruir 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 ... VERIFICAR RESTRIÇÃ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 do SQL Server 2022 e posteriores

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

Exemplo

O exemplo a seguir mostra uma consulta no sys.dm_db_objects_disabled_on_compatibility_level_change para localizar os objetos afetados pela alteração do nível de compatibilidade para 120.

SELECT * FROM sys.dm_db_objects_disabled_on_compatibility_level_change(120);  
GO