Räumliche Daten – sys.dm_db_objects_disabled_on_compatibility_level_change

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Listet die Indizes und Einschränkungen auf, die aufgrund einer Änderung des Kompatibilitätsgrads in SQL Server deaktiviert werden. Indizes und Einschränkungen, die persistierte berechnete Spalten enthalten, deren Ausdrücke räumliche UDTs verwenden, werden nach einem Upgrade oder einer Änderung des Kompatibilitätsgrads deaktiviert. Bestimmen Sie die Auswirkungen einer Änderung des Kompatibilitätsgrads mithilfe dieser dynamischen Verwaltungsfunktion.

Transact-SQL-Syntaxkonventionen

Syntax

sys.dm_db_objects_disabled_on_compatibility_level_change ( compatibility_level )   

Argumente

compatibility_level
int -Wert, der den Kompatibilitätsgrad angibt, den Sie festlegen möchten.

Zurückgegebene Tabelle

Spaltenname Datentyp BESCHREIBUNG
class int 1 = Einschränkungen

7 = Indizes und Heaps
class_desc nvarchar(60) OBJECT oder COLUMN für Einschränkungen

INDEX für Indizes und Heaps
major_id int OBJECT ID der Einschränkungen

OBJECT ID der Tabelle, die Indizes und Heaps enthält
minor_id int NULL für Einschränkungen

Index_id für Indizes und Heaps
Abhängigkeit nvarchar(60) Beschreibung der Abhängigkeit, die bewirkt, dass die Einschränkung oder der Index deaktiviert wird. Die gleichen Werte werden auch in den Warnungen verwendet, die während des Upgrades ausgelöst werden. Einige Beispiele dafür sind:

"space" für eine systeminterne Funktion

"geometry" für einen System-UDT

"geography::Parse" für eine Methode eines System-UDTs

Allgemeine Hinweise

Persistente berechnete Spalten, die systeminterne Funktionen verwenden, werden bei einer Änderung des Kompatibilitätsgrads deaktiviert. Darüber hinaus werden persistierte berechnete Spalten, die eine Geometry-Methode oder Geography-Methode verwenden, beim Upgrade einer Datenbank deaktiviert.

Welcher Funktionen haben eine Deaktivierung von persistierten berechneten Spalten zur Folge?

Wenn die folgenden Funktionen im Ausdruck einer persistierten berechneten Spalte verwendet werden, bewirken sie, dass Indizes und Einschränkungen, die auf diese Spalten verweisen, bei einer Änderung des Kompatibilitätsgrads von 80 auf 90 deaktiviert werden:

  • IsNumeric

Wenn die folgenden Funktionen im Ausdruck einer persistierten berechneten Spalte verwendet werden, bewirken sie, dass Indizes und Einschränkungen, die auf diese Spalten verweisen, bei einer Änderung des Kompatibilitätsgrads von 100 auf 110 oder höher deaktiviert werden:

  • Soundex

  • Geografie:: GeomFromGML

  • Geografie:: STGeomFromText

  • Geography:: STLineFromText

  • Geografie:: STPolyFromText

  • Geografie:: STMPointFromText

  • Geografie:: STMLineFromText

  • Geografie:: STMPolyFromText

  • Geografie:: STGeomCollFromText

  • Geografie:: STGeomFromWKB

  • Geografie:: STLineFromWKB

  • Geografie:: STPolyFromWKB

  • Geografie:: STMPointFromWKB

  • Geografie:: STMLineFromWKB

  • Geografie:: STMPolyFromWKB

  • Geografie:: STUnion

  • Geografie:: STIntersection

  • Geografie:: STDifference

  • Geografie:: STSymDifference

  • Geografie:: STBuffer

  • Geografie:: BufferWithTolerance

  • Geography:: Parse

  • Geografie:: Reduce

Verhalten der deaktivierten Objekte

Indizes

Wenn der gruppierte Index deaktiviert ist oder ein nicht gruppierter Index erzwungen wird, wird der folgende Fehler ausgelöst: "Der Abfrageprozessor kann keinen Plan erstellen, weil der '%.*ls'-Index für die Tabelle oder Ansicht '%.*ls' deaktiviert ist." Um diese Objekte wieder zu aktivieren, erstellen Sie die Indizes nach dem Upgrade neu, indem Sie ALTER INDEX ON ... aufrufen. NEU ERSTELLEN.

Heaps

Wenn eine Tabelle mit einem deaktivierten Heap verwendet wird, wird der folgende Fehler ausgelöst. Um diese Objekte wieder zu aktivieren, erstellen Sie nach dem Upgrade neu, indem Sie ALTER INDEX ALL ON ... aufrufen. NEU ERSTELLEN.

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

Wenn Sie versuchen, den Heap während eines Onlinevorgangs neu zu erstellen, wird ein Fehler ausgelöst.

CHECK-Einschränkungen und Fremdschlüssel

Deaktivierte CHECK-Einschränkungen und Fremdschlüssel lösen keinen Fehler aus. Die Einschränkungen werden jedoch nicht erzwungen, wenn Zeilen geändert werden. Um diese Objekte erneut zu aktivieren, überprüfen Sie die Einschränkungen nach dem Upgrade, indem Sie ALTER TABLE ... aufrufen. CHECK CONSTRAINT.

Permanent berechnete Spalten

Da eine Deaktivierung einzelner Spalten nicht möglich ist, wird die gesamte Tabelle deaktiviert, indem der gruppierte Index oder der Heap deaktiviert wird.

Sicherheit

Berechtigungen

Erfordert die VIEW DATABASE STATE-Berechtigung.

Berechtigungen für SQL Server 2022 und höher

Erfordert die VIEW DATABASE PERFORMANCE STATE-Berechtigung für die Datenbank.

Beispiel

Im folgenden Beispiel wird eine Abfrage für sys.dm_db_objects_disabled_on_compatibility_level_change angezeigt, durch die Objekte gesucht werden, auf die sich eine Änderung des Kompatibilitätsgrads in 120 auswirkt.

SELECT * FROM sys.dm_db_objects_disabled_on_compatibility_level_change(120);  
GO