공간 데이터 - sys.dm_db_objects_disabled_on_compatibility_level_change
적용 대상: SQL Server
Azure SQL Database
Azure SQL Managed Instance
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 | 제약 조건의 OBJECT ID 인덱스 및 힙을 포함하는 테이블의 개체 ID |
minor_id | int | 제약 조건에 대한 NULL 인덱스 및 힙에 대한 Index_id |
dependency | nvarchar(60) | 제약 조건 또는 인덱스가 비활성화되도록 하는 종속성에 대한 설명입니다. 업그레이드 중에 발생하는 경고에도 동일한 값이 사용됩니다. 예에는 다음이 포함됩니다. 내장 함수의 "space" 시스템 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
지리:: STIntersection
지리:: STDifference
Geography:: STSymDifference
지리:: STBuffer
Geography:: BufferWithTolerance
지리:: 구문 분석
Geography:: Reduce
비활성화된 개체의 동작
인덱스
클러스터형 인덱스를 사용하지 않도록 설정하거나 비클러스터형 인덱스를 강제로 적용하면 "테이블 또는 뷰 '%.*ls'의 인덱스 '%.*ls'이(가) 비활성화되어 쿼리 프로세서에서 계획을 생성할 수 없습니다." 오류가 발생합니다. 이러한 개체를 다시 사용하도록 설정하려면 ALTER INDEX ON을 호출 하여 업그레이드 후 인덱스를 다시 빌드합니다. 다시 빌드합니다.
힙
사용하지 않도록 설정된 힙이 있는 테이블을 사용하는 경우 다음 오류가 발생합니다. 이러한 개체를 다시 사용하도록 설정하려면 ALTER INDEX ALL ON을 호출 하여 업그레이드 후 다시 빌드합니다. 다시 빌드합니다.
// 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
온라인 작업 중에 힙을 다시 빌드하려고 하면 오류가 발생합니다.
Check 제약 조건 및 외식 키
사용하지 않도록 설정된 CHECK 제약 조건 및 외식 키는 오류를 발생시키지 않습니다. 그러나 행을 수정할 때는 제약 조건이 적용되지 않습니다. 이러한 개체를 다시 사용하도록 설정하려면 ALTER TABLE을 호출 하여 업그레이드한 후 제약 조건을 확인합니다. CHECK 제약 조건.
지속형 계산 열
단일 열은 비활성화할 수 없으므로 클러스터형 인덱스나 힙을 비활성화하여 전체 테이블이 비활성화됩니다.
보안
사용 권한
VIEW DATABASE STATE 권한이 필요합니다.
SQL Server 2022 이상에 대한 권한
데이터베이스에 대한 VIEW DATABASE PERFORMANCE STATE 권한이 필요합니다.
예시
다음 예제에서는 호환성 수준을 120으로 변경하여 영향을 받는 개체를 찾기 위한 sys.dm_db_objects_disabled_on_compatibility_level_change 대한 쿼리를 보여줍니다.
SELECT * FROM sys.dm_db_objects_disabled_on_compatibility_level_change(120);
GO