sys.dm_db_objects_disabled_on_compatibility_level_change(Transact-SQL)

호환성 수준 변경의 결과로 비활성화되는 인덱스 및 제약 조건을 나열합니다.

식에서 공간 UDT를 사용하는 지속형 계산 열을 포함하는 인덱스 및 제약 조건은 호환성 수준을 업그레이드하거나 변경하면 비활성화됩니다. 이 동적 관리 함수를 사용하여 호환성 수준 변경의 결과를 확인할 수 있습니다.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

sys.dm_db_objects_disabled_on_compatibility_level_change ( compatibility_level ) 

인수

  • compatibility_level
    설정하려는 호환성 수준을 식별하는 int입니다.

반환된 테이블

열 이름

데이터 형식

설명

클래스

int

1 = 제약 조건

7 = 인덱스 및 힙

class_desc

nvarchar(60)

제약 조건의 경우 OBJECT 또는 COLUMN

인덱스 및 힙의 경우 INDEX

major_id

int

제약 조건의 개체 ID

인덱스 및 힙을 포함하는 테이블의 개체 ID

minor_id

int

제약 조건의 경우 NULL

인덱스 및 힙의 경우 Index_id

dependency

nvarchar(60)

제약 조건 또는 인덱스의 비활성을 야기하는 종속성에 대한 설명입니다. 업그레이드 중 발생하는 경고에도 동일한 값이 사용됩니다. 이러한 데이터의 예는 다음과 같습니다.

  • 내장 함수의 경우 "space"

  • 시스템 UDT의 경우 "geometry"

  • 시스템 UDT의 메서드의 경우 "geography::Parse"

일반적인 주의

호환성 수준을 변경하면 일부 내장 함수를 사용하는 지속형 계산 열이 비활성화됩니다. 또한 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

  • Geography:: 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

온라인 작업 중 힙을 다시 작성하려고 하면 다음 오류가 발생합니다.

// ErrorNumber: TBD 
// ErrorSeverity: EX_USER 
// ErrorFormat: Cannot rebuild table '%.*ls' online because it is disabled. 
// ErrorInserts: table name 
// ErrorCause: Table cannot be rebuilt online if it is disabled. 
// ErrorCorrectiveAction: Rebuild the disabled table offline. 
// ErrorExecImpact: TRANSACTION_ABORT 
// ErrorBlameComponent: User 
// ErrorProbability: Low 
// ErrorStateBefore: ONLINE 
// ErrorStateAfter: ONLINE 
// ErrorFirstProduct: SQL11 

CHECK 제약 조건 및 외래 키

비활성화된 CHECK 제약 조건 및 외래 키는 오류를 일으키지 않습니다. 그러나 행이 수정될 때 제약 조건이 적용되지 않습니다. 이러한 개체를 다시 활성화하려면 업그레이드 후 ALTER TABLE … CHECK CONSTRAINT를 호출하여 제약 조건을 확인하십시오.

지속형 계산 열

단일 열은 비활성화할 수 없으므로 클러스터형 인덱스나 힙을 비활성화하여 전체 테이블이 비활성화됩니다.

보안

사용 권한

VIEW DATABASE STATE 권한이 필요합니다.

다음 예에서는 호환성 수준을 110으로 변경한 결과 영향을 받는 개체를 찾기 위해 sys.dm_db_objects_disabled_on_compatibility_level_change에 대해 실행한 쿼리를 보여 줍니다.

SELECT * FROM sys.dm_db_objects_disabled_on_compatibility_level_change(110);
GO