DBAtlas · 데이터베이스 운영 아틀라스

3729: Cannot DROP because it is being referenced by object (객체가 참조 중이어서 DROP 불가)

SQL Server

의미

삭제하려는 객체(테이블, 타입, 함수 등)를 다른 객체가 참조하고 있어 그 의존성 때문에 삭제할 수 없다. 특히 스키마 바인딩된 객체가 이렇게 보호된다.

원인

WITH SCHEMABINDING으로 생성된 뷰나 함수가 의존하는 테이블/객체를 삭제하려 하거나, 외래 키가 참조하는 테이블을 삭제하거나, 테이블/파라미터가 아직 사용 중인 사용자 정의 타입을 제거하려는 경우다.

해결 방법

참조하는 객체를 먼저 삭제하거나 의존성을 제거한다. 의존성 확인: SELECT referencing_schema_name, referencing_entity_name FROM sys.dm_sql_referencing_entities('app_schema.object', 'OBJECT'); 스키마 바인딩된 뷰는 먼저 ALTER VIEW로 SCHEMABINDING을 제거하거나 뷰를 삭제한 후 테이블을 삭제한다.

DBAtlas에서 열기 →

같은 데이터베이스의 다른 항목