SQL 종속성 이해

새 설치: 2005년 12월 5일

SQL 종속성은 다른 개체에 종속된 개체를 만드는 SQL 식에 사용되는 이름별 참조입니다. sys.sql_dependencies 카탈로그 뷰를 쿼리하여 이름별 종속성을 모두 찾을 수 있습니다. sys.sql_dependencies의 각 행에 대해 참조된 엔터티(referenced_major_id)가 참조하는 개체의 영구 SQL 식에 이름별로 나타납니다.

다음 그림에서는 SQL 종속성의 예를 보여 줍니다.

SQL 종속성 설명

이 그림에는 두 개의 개체인 프로시저 X와 프로시저 Y가 있습니다. 프로시저 X에는 프로시저 Y에 대한 이름별 참조를 가진 SQL 식이 있습니다. 프로시저 X는 참조하는 개체 또는 종속 개체라고 하고 프로시저 Y는 참조된 개체 또는 독립 개체라고 합니다. 프로시저 X는 프로시저 Y에 종속되므로 프로시저 Y가 없을 경우 런타임 오류가 발생하며 작업이 실패합니다. 그러나 프로시저 Y는 프로시저 X가 없어도 실패하지 않습니다.

다음 예에서는 저장 프로시저 X가 저장 프로시저 Y에 종속되는 방법을 보여 줍니다.

USE tempdb
GO
CREATE PROCEDURE Y AS
SELECT * FROM sys.objects
GO
CREATE PROCEDURE X as
    EXEC Y
GO

Y에 대한 X의 종속성을 확인하려면 다음 쿼리를 실행합니다.

SELECT * 
FROM  sys.sql_dependencies 
WHERE object_id = object_id('X')
   AND   referenced_major_id = object_id('Y')
   AND   referenced_minor_id = 0
   AND   class = 0;
GO

프로시저 X를 삭제해도 프로시저 Y는 계속 실행할 수 있습니다. 프로시저 Y는 프로시저 X에 독립적입니다. 반대로 프로시저 Y를 삭제하고 프로시저 X를 실행하면 SQL Server에서 런타임 오류가 반환됩니다. 프로시저 X는 프로시저 Y에 종속됩니다.

프로시저 Y를 삭제하면 sys.sql_dependencies 카탈로그 뷰에 있는 프로시저 X에 대한 행도 삭제됩니다. 이 동작을 확인하려면 다음 코드를 실행합니다.

USE tempdb;
GO
DROP PROCEDURE Y;
GO
SELECT * 
FROM  sys.sql_dependencies 
WHERE object_id = object_id('X')
   AND   referenced_major_id = object_id('Y')
   AND   referenced_minor_id = 0
   AND   class = 0;
GO

WITH SCHEMABINDING 절을 사용하여 종속성 유지 관리를 적용할 수 있습니다. 뷰를 스키마 바인딩하면 종속성이 손상되는 방식으로 참조된 테이블 또는 열을 수정하거나 삭제할 수 없습니다. 마찬가지로 함수를 스키마 바인딩하면 함수의 종속성이 손상되는 방식으로 참조된 개체 및 열을 수정하거나 삭제할 수 없습니다. 스키마 바인딩에 대한 자세한 내용은 사용자 정의 함수 만들기(데이터베이스 엔진)뷰 디자인 및 구현을 참조하십시오.

[!참고] SQL Server 2005에서는 스키마 바운드 저장 프로시저 또는 트리거를 지원하지 않습니다.

SQL 종속성의 예

다음 표에서는 참조하는 개체와 참조된 개체 사이에 있을 수 있는 SQL 종속성의 몇 가지 예를 나열합니다.

참조하는 개체의 유형

카탈로그 뷰 정의 열의 SQL 식

참조된 엔터티 예

프로시저, 함수, 뷰, 트리거

sys.sql_modules

ms345449.note(ko-kr,SQL.90).gif참고:

서버 수준 트리거의 경우 sys.server_sql_modules를 참조하십시오.

테이블, 프로시저, 유형

계산 열

sys.computed_columns

함수, 유형, 다른 열

DEFAULT 정의

sys.default_constraints

함수

CHECK 제약 조건

sys.check_constraints

함수, 파티션 함수

번호가 매겨진 프로시저

sys.numbered_procedure

테이블, 프로시저, 유형

스키마 바운드 함수

sys.sql_modules

XML 스키마 컬렉션

비-SQL(Non-SQL) 종속성의 예

개체 사이의 모든 종속성이 SQL 종속성인 것은 아닙니다. 다른 개체에 대한 이름별 참조가 포함된 SQL식이 개체에 없을 경우 두 개체 사이에는 SQL 종속성이 없습니다. 다음 표에서는 비-SQL(Non-SQL) 종속성의 몇 가지 예를 나열합니다.

참조하는 개체의 유형 종속 대상 설명

테이블

테이블과 해당 열 사이의 종속성은 암시적입니다. 이 관계는 시스템 카탈로그에서 외래 키 sys.columns.object_id로 표시됩니다.

열의 DEFAULT 정의. 예를 들면 다음과 같습니다.

CREATE TABLE myTable AS

(ColA int CONSTRAINT Const1 DEFAULT 1)

열. 이 예에서는 ColA입니다.

기본 Const1ColA 열을 이름으로 참조하지 않으므로 DEFAULT 정의와 해당 열 사이에는 SQL 종속성이 없습니다. 대신 sys.columns.default_object_id에서 DEFAULT 정의 개체로의 외래 키 참조가 있습니다.

참고 항목

관련 자료

sys.sql_dependencies(Transact-SQL)
sys.sysdepends(Transact-SQL)
sp_depends(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기