sys.sql_dependencies(Transact-SQL)
업데이트: 2006년 12월 12일
SQL 식에서 참조된 엔터티(독립) 또는 다른 개체(종속)로의 참조가 정의된 문의 종속성당 한 개의 행을 포함합니다. sys.sql_dependencies 뷰는 엔터티 간의 이름별 종속성을 추적하는 데 사용됩니다. sys.sql_dependencies의 각 행에 대해 참조된 엔터티가 참조하는 개체의 영구 SQL 식에 이름별로 나타납니다. 또한 참조하는 개체에 스키마 바운드 식이 있을 경우 종속성이 적용됩니다. 자세한 내용은 SQL 종속성 이해를 참조하십시오.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
class |
tinyint |
참조된(독립) 엔터티의 클래스를 식별합니다. 0 = 개체 또는 열(스키마 바운드가 아닌 참조만 해당) 1 = 개체 또는 열(스키마 바운드 참조) 2 = 유형(스키마 바운드 참조) 3 = XML 스키마 컬렉션(스키마 바운드 참조) 4 = 파티션 함수(스키마 바운드 참조) |
class_desc |
nvarchar(60) |
참조된(독립) 엔터티의 클래스에 대한 설명입니다.
|
object_id |
int |
참조(종속) 개체의 ID입니다. |
column_id |
int |
종속 ID가 열인 경우 참조(종속) 열의 ID이며 아닌 경우 0입니다. |
referenced_major_id |
int |
다음에서 지정한 클래스의 값에 따라 해석되며 참조된(독립) 엔터티의 ID입니다. 0, 1 = 개체 또는 열의 개체 ID 2 = 유형 ID 3 = XML 스키마 컬렉션 ID |
referenced_minor_id |
int |
다음과 같이 클래스의 값에 따라 해석되며 참조된(독립) 엔터티의 보조 ID입니다. 클래스 값과 그에 따른 해석은 다음과 같습니다. 0, referenced_minor_id는 열 ID이고 열이 아닌 경우 0입니다. 1, referenced_minor_id는 열 ID이고 열이 아닌 경우 0입니다. 그 외의 경우 referenced_minor_id = 0입니다. |
is_selected |
bit |
개체 또는 열이 선택되었습니다. |
is_updated |
bit |
개체 또는 열이 업데이트되었습니다. |
is_select_all |
bit |
개체가 SELECT * 문에서 사용되었습니다(개체 수준만 해당). |
주의
종속성은 참조(종속) 개체가 생성되는 시점에 참조된(독립) 엔터티가 있는 경우에만 CREATE 중에 설정됩니다. 이름 확인이 지연되므로 참조된 엔터티는 생성 시점에 존재하지 않아도 됩니다. 이 경우 종속성 행은 생성되지 않습니다. 또한 동적 SQL을 통해 참조된 엔터티는 종속성을 설정하지 않습니다.
참조된(독립) 엔터티가 DROP을 사용하여 삭제된 경우 종속성 행은 자동으로 삭제됩니다. 종속성 행을 다시 설정하려면 CREATE를 사용하여 정확한 종속성 순서에 따라 참조된 부분 및 참조하는 부분을 모두 다시 만들어야 합니다.
스키마 바운드 종속성과 스키마 바운드가 아닌 종속성 모두 개체에 대해 추적됩니다. CHECK 제약 조건, 기본값 및 계산 열 참조는 암시적인 스키마 바운드입니다. 유형, XML 스키마 컬렉션 및 파티션 함수의 종속성은 스키마 바운드 종속성에 대해서만 추적됩니다. SQL Server 2005 서비스 팩 1 이전에서 Transact-SQL 함수 또는 Transact-SQL 프로시저에 정의된 매개 변수는 암시적으로 스키마에 바인딩됩니다. 따라서 CLR 사용자 정의 유형, 별칭 또는 XML 스키마 컬렉션에 종속된 매개 변수는 sys.sql_dependencies 카탈로그 뷰를 사용하여 볼 수 있습니다. 그러나 이러한 개체의 이름을 바꿀 수는 없습니다. SQL Server 2005 서비스 팩 2에서 이러한 개체에 종속된 매개 변수는 스키마 바인딩을 사용하여 Transact-SQL 모듈을 만든 경우에만 카탈로그 뷰에서 추적됩니다. 스키마 바인딩되지 않은 모듈에서 매개 변수로 사용된 CLR 사용자 정의 유형, 별칭 또는 XML 스키마 컬렉션은 이름을 바꿀 수 있지만 sp_refreshsqlmodule을 사용하여 모듈 정의를 새로 고쳐야 할 수도 있습니다.
예
1. 지정한 함수에 대한 종속성 찾기
다음 예에서는 지정된 함수에 대한 종속성을 반환합니다. 다음 쿼리를 실행하기 전에 <database_name>
및 <schema_name.function_name>
을 올바른 이름으로 대체합니다.
USE <database_name>;
GO
SELECT OBJECT_NAME(object_id) AS referencing_object_name
,COALESCE(COL_NAME(object_id, column_id), '(n/a)') AS referencing_column_name
,*
FROM sys.sql_dependencies
WHERE referenced_major_id = OBJECT_ID('<schema_name.function_name>')
ORDER BY OBJECT_NAME(object_id), COL_NAME(object_id, column_id);
GO
2. 지정한 CLR 사용자 정의 유형에 종속된 CHECK 제약 조건 찾기
다음 쿼리를 실행하기 전에 <database_name>
을 올바른 이름으로 대체하고 <schema
_name.data_type_name>
을 올바른 스키마 한정 CLR 사용자 정의 유형 이름으로 대체합니다.
USE <database_name>;
GO
SELECT SCHEMA_NAME(o.schema_id) AS schema_name
,OBJECT_NAME(o.parent_object_id) AS table_name
,OBJECT_NAME(o.object_id) AS constraint_name
FROM sys.sql_dependencies AS d
JOIN sys.objects AS o ON o.object_id = d.object_id
WHERE referenced_major_id = TYPE_ID('<schema_name.data_type_name>')
AND class = 2 -- schema-bound references to type
AND OBJECTPROPERTY(o.object_id, 'IsCheckCnst') = 1; -- exclude non-CHECK dependencies
GO
3. 지정한 CLR 사용자 정의 유형 또는 별칭 유형에 종속된 뷰, Transact-SQL 함수 및 Transact-SQL 저장 프로시저 찾기
다음 쿼리는 지정한 CLR 사용자 정의 유형 또는 별칭 유형에 대한 뷰, Transact-SQL 함수 및 Transact-SQL 저장 프로시저에 있는 모든 스키마 바운드 종속성을 반환합니다.
USE <database_name>;
GO
SELECT SCHEMA_NAME(o.schema_id) AS dependent_object_schema
,OBJECT_NAME(o.object_id) AS dependent_object_name
,o.type_desc AS dependent_object_type
,d.class_desc AS kind_of_dependency
,TYPE_NAME (d.referenced_major_id) AS type_name
FROM sys.sql_dependencies AS d
JOIN sys.objects AS o
ON d.object_id = o.object_id
AND o.type IN ('FN','IF','TF', 'V', 'P')
WHERE d.class = 2 -- dependencies on types
AND d.referenced_major_id = TYPE_ID('<schema_name.data_type_name>')
ORDER BY dependent_object_schema, dependent_object_name;
GO
참고 항목
참조
카탈로그 뷰(Transact-SQL)
개체 카탈로그 뷰(Transact-SQL)
sp_rename(Transact-SQL)
sp_refreshsqlmodule(Transact-SQL)
관련 자료
사용자 정의 유형 구현
SQL 종속성 이해
SQL Server 시스템 카탈로그 쿼리에 대한 질문과 대답
서버에서 XML 스키마 컬렉션 관리
도움말 및 정보
변경 내역
릴리스 | 내역 |
---|---|
2006년 12월 12일 |
|