空間資料 - sys.dm_db_objects_disabled_on_compatibility_level_change
適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體
列出 SQL Server 中因變更相容性層級而停用的索引和條件約束。 包含保存計算資料行的索引和條件約束,其運算式在升級或變更相容性層級之後將會停用空間 UDT。 使用此動態管理功能來判斷相容性層級變更的影響。
語法
sys.dm_db_objects_disabled_on_compatibility_level_change ( compatibility_level )
引數
compatibility_level
int ,識別您打算設定的相容性層級。
傳回的資料表
資料行名稱 | 資料類型 | 描述 |
---|---|---|
class | int | 1 = 條件約束 7 = 索引和堆積 |
class_desc | nvarchar(60) | 條件約束的 OBJECT 或 COLUMN 索引和堆積的 INDEX |
major_id | int | 條件約束的物件識別碼 包含索引和堆積的資料表物件識別碼 |
minor_id | int | 條件約束的 Null 索引和堆積的Index_id |
dependency | nvarchar(60) | 導致條件約束或索引停用的相依性描述。 升級期間引發的警告中也會使用相同的值。 範例包括如下: 內建的「空間」 系統 UDT 的「geometry」 系統 UDT 方法的 「geography::P arse」 |
一般備註
當相容性層級變更時,會停用使用某些內建函式的持續性計算資料行。 此外,升級資料庫時,會停用使用任何 Geometry 或 Geography 方法的保存計算資料行。
哪些函式會停用保存的計算資料行?
在保存計算資料行的運算式中使用下列函式時,它們會導致在相容性層級從 80 變更為 90 時,參考這些資料行的索引和條件約束停用:
- IsNumeric
當下列函式用於保存計算資料行的運算式時,它們會導致在相容性層級從 100 變更為 110 或更高版本時,參考這些資料行的索引和條件約束停用:
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
地理位置::STBuffer
Geography:: BufferWithTolerance
Geography:: Parse
Geography::Reduce
已停用物件的行為
索引數
如果叢集索引已停用,或強制使用非叢集索引,就會引發下列錯誤:「查詢處理器無法產生計畫,因為資料表或檢視表 '%.*ls' 上的索引 '%.*ls' 已停用。若要重新啟用這些物件,請在升級後重建索引,方法是呼叫 ALTER INDEX ON ...REBUILD 。
堆
如果使用具有停用堆積的資料表,就會引發下列錯誤。 若要重新啟用這些物件,請藉由呼叫 ALTER INDEX ALL ON 來重建升級之後...REBUILD 。
// 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
如果您在線上作業期間嘗試重建堆積,就會引發錯誤。
檢查條件約束和外鍵
停用的檢查條件約束和外鍵不會引發錯誤。 不過,修改資料列時不會強制執行條件約束。 若要重新啟用這些物件,請在升級之後呼叫 ALTER TABLE ... 來檢查條件約束。CHECK CONSTRAINT 。
保存的計算資料行
由於無法停用單一資料行,因此停用叢集索引或堆積會停用整個資料表。
安全性
權限
需要 VIEW DATABASE STATE 許可權。
SQL Server 2022 和更新版本的權限
需要資料庫上的 VIEW DATABASE PERFORMANCE STATE 權限。
範例
下列範例示範sys.dm_db_objects_disabled_on_compatibility_level_change 查詢 ,以尋找因將相容性層級變更為 120 而受到影響的物件。
SELECT * FROM sys.dm_db_objects_disabled_on_compatibility_level_change(120);
GO
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應