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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per