Database/SQL Server

SQL Server - 객체 종속성 식별 Identifying object dependencies

청렴결백한 만능 재주꾼 2020. 12. 22. 00:19
반응형

 

외래키로 참조되어있는 테이블은 삭제하고 싶어도 삭제가 되지 않는다.

 

하지만 프로시저에 참조되어진 테이블은 삭제가 가능하다. 

 

그런 관계를 확인하고 싶을 때 

 

1. 첫 번째 방법

 

Microsoft SQL Server Management Studio 경우 

 

테이블에 오른쪽 마우스를 눌러 View Dependencies로 들어간다.

 

그렇게 하면 이 테이블에 속해져있는 것과 이 테이블이 속한 곳이 나온다.

이 테이블이 의존하는 객체

이 테이블에 의존하는 객체

 

 

 

 

2. 두 번째 방법

 A테이블에 의존하는 모든 객체 가져오는 명령문Returns all the objects that depend on ATable

 

Select * from sys.dm_sql_referencing_entities('dbo.ATable','Object')

sys.dm_sql_referencing_entities - 참조하는 엔티티sys.dm_sql_referenced_entities - 참조되어지는 엔티티
example:

Create view VwEmployees --> Referencing entity
as
Select * from Employees  --> Referenced entity



스키마 바운드 종속성 vs Non  스키마 바운드 종속성Schema-bound dependency VS Non-Schema-bound dependency
스키마 바운드 종속성은 참조하는 개체가 삭제되거나 수정되는 것을 방지한다.넌 스키마 바운드 종속성은 그런 것에 연연해 하지 않고 삭제나 수정이 가능하다.

 

 

 

3. 세 번째 방법

sp_depends 사용하기.

저장된 프로시저로 종속성 확인. 

 

1. 개체의 종속 관계를 보여주는 프로시저 A system stored procedure that returns object dependencies.
2. 예를들어 For example,
2-1. 만약 인자로 테이블이름으로 지정한다면 , 그 테이블의 종속 관계가 보여질 것이다.If you specifiy a table name as the argument, then the views and procedures that depend on the specified table are displayed
2-2. 먄약 인자로 뷰나 프로시저 이름을 지정한다면, 그 뷰나 프로시저가 속해진 테이블이름이 보일 것이다. If you specify a view or a procedure name as the argument, then the tables and views on which the specified view or procedure depends are displayed.

 

종속된 테이블 이름과 각 열의 이름을 리턴한다.

Returns the name of the table and the respective column names on which the stored procedure sp_Get depends.

 

만약 종속된 테이블이 삭제되거나 다시 만들어졌다면 이 프로시저는 정확하게 종속관계를 보여주지 않는다. 

sp_depends does not report dependencies correctly, if the table on which the stored procedure depends is deleted and recreated.

 

이 프로시저는 안 쓰는 추세라 없어질 수도 있다.

sp_depends is on the deprecation path. This might be removed from the future versions of SQL Server.

반응형