Räumliche Daten – sys.dm_db_objects_disabled_on_compatibility_level_change
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz
Listet die Indizes und Einschränkungen auf, die aufgrund einer Änderung der Kompatibilitätsstufe 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
Geografie:: 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
Geografie:: Analysieren
Geografie:: Reduzieren
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, da der Index '%.*ls' in der Tabelle oder Ansicht '%.*ls' deaktiviert ist." Um diese Objekte erneut zu aktivieren, erstellen Sie die Indizes nach dem Upgrade neu, indem Sie ALTER INDEX ON aufrufen ... NEUERSTELLEN.
Heaps
Wenn eine Tabelle mit einem deaktivierten Heap verwendet wird, wird der folgende Fehler ausgelöst. Um diese Objekte erneut zu aktivieren, erstellen Sie nach dem Upgrade neu, indem Sie ALTER INDEX ALL ON ... NEUERSTELLEN.
// 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.
Überprüfen von Einschränkungen und Fremdschlüsseln
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 durch Aufrufen von ALTER TABLE ... CHECK CONSTRAINT.
Gespeicherte 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 Berechtigung VIEW DATABASE STATE.
Berechtigungen für SQL Server 2022 und höher
Erfordert DIE BERECHTIGUNG "DATENBANKLEISTUNGSSTATUS ANZEIGEN" 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