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