Dati spaziali - sys.dm_db_objects_disabled_on_compatibility_level_change

Si applica a:SQL ServerDatabase SQL diAzure Istanza gestita di SQL di Azure

Elenca gli indici e i vincoli che verranno disabilitati in seguito alla modifica del livello di compatibilità in SQL Server. Indici e vincoli che contengono colonne calcolate persistenti le cui espressioni utilizzano tipi definiti dall'utente spaziali saranno disabilitati dopo l'aggiornamento o la modifica del livello di compatibilità. Utilizzare questa funzione a gestione dinamica per determinare l'impatto di una modifica nel livello di compatibilità.

Convenzioni di sintassi Transact-SQL

Sintassi

sys.dm_db_objects_disabled_on_compatibility_level_change ( compatibility_level )   

Argomenti

compatibility_level
int che identifica il livello di compatibilità che si intende impostare.

Tabella restituita

Nome colonna Tipo di dati Descrizione
class int 1 = vincoli

7 = indici e heap
class_desc nvarchar(60) OBJECT o COLUMN per i vincoli

INDEX per indici e heap
major_id int OBJECT ID dei vincoli

OBJECT ID della tabella che contiene indici e heap
minor_id int NULL per i vincoli

Index_id per indici e heap
dipendenza nvarchar(60) Descrizione della dipendenza che provoca la disabilitazione del vincolo o dell'indice. Gli stessi valori vengono utilizzati inoltre negli avvisi generati durante l'aggiornamento. Di seguito sono illustrati alcuni esempi.

"space" per una funzione intrinseco

'geometry' per un tipo definito dall'utente del sistema

'geography::Parse' per un metodo di un tipo definito dall'utente del sistema

Osservazioni generali

Le colonne calcolate persistenti in cui sono utilizzate alcune funzioni intrinseche vengono disabilitate quando il livello di compatibilità viene modificato. In modo analogo, anche le colonne calcolate persistenti che utilizzano metodi geometry o geography vengono disabilitate quando un database viene aggiornato.

Funzioni che provocano la disabilitazione delle colonne calcolate persistenti

Quando le funzioni seguenti vengono utilizzate nell'espressione di una colonna calcolata persistente, provocano la disabilitazione di indici e vincoli che fanno riferimento a tali colonne quando il livello di compatibilità viene modificato da 80 a 90:

  • IsNumeric

Quando le funzioni seguenti vengono utilizzate nell'espressione di una colonna calcolata persistente, provocano la disabilitazione di indici e vincoli che fanno riferimento a tali colonne quando il livello di compatibilità viene modificato da 100 a 110 o un valore maggiore:

  • 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:: Analizza

  • Geography:: Reduce

Comportamento degli oggetti disabilitati

Indici

Se l'indice cluster è disabilitato o se viene forzato un indice non cluster, viene generato l'errore seguente: "Query Processor non è in grado di produrre un piano perché l'indice '%.*ls' nella tabella o nella vista '%.*ls' è disabilitato". Per riabilitare questi oggetti, ricompilare gli indici dopo l'aggiornamento chiamando ALTER INDEX ON ... RICOMPILAZIONE.

Cumuli

Se viene utilizzata una tabella con un heap disabilitato, viene generato l'errore seguente. Per riabilitare questi oggetti, ricompilare dopo l'aggiornamento chiamando ALTER INDEX ALL ON ... RICOMPILAZIONE.

// 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 si tenta di ricompilare l'heap durante un'operazione online, viene generato un errore.

Vincoli CHECK e chiavi esterne

Sebbene vincoli CHECK e chiavi esterne disabilitati non generino alcun errore, i vincoli non vengono applicati quando vengono modificate le righe. Per riabilitare questi oggetti, controllare i vincoli dopo l'aggiornamento chiamando ALTER TABLE ... VINCOLO CHECK.

Colonne calcolate persistenti

Poiché non è possibile disabilitare una sola colonna, l'intera tabella viene disabilitata applicando questa operazione all'indice cluster o all'heap.

Sicurezza

Autorizzazioni

È richiesta l'autorizzazione VIEW DATABASE STATE.

Autorizzazioni per SQL Server 2022 e versioni successive

È richiesta l'autorizzazione VIEW DATABASE PERFORMANCE STATE per il database.

Esempio

Nell'esempio seguente viene illustrata una query su sys.dm_db_objects_disabled_on_compatibility_level_change per trovare gli oggetti interessati modificando il livello di compatibilità su 120.

SELECT * FROM sys.dm_db_objects_disabled_on_compatibility_level_change(120);  
GO