2009-12-16 3 views
3

"종속성보기"메뉴를 사용하여 Management Studio가 표시하는 것을 정확히 찾고 있습니다.개체의 종속성을 반환하는 쿼리를 작성하십시오.

  1. Management Studio를 마우스 오른쪽 버튼으로 객체를 클릭하고 "보기 종속성"
  2. 이제 앞뒤로 종속성을 탐색 할 수 있습니다를 선택 SQL 서버 2008
  3. 에 연결.

프로그래밍 방식으로 동일한 정보를 얻으려면 어떻게해야합니까? (SQL 쿼리?)

답변

4
Before you run the following query, replace <database_name> and <schema_name.function_name> with valid names 

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 
1

sys 및 INFORMATION_SCHEMA 테이블의 메타 데이터를 확인하십시오.

모두 유용 할 수있는 this answer, this answerthis answer이 있습니다.

+0

예 ... 내가 본 몇 가지 솔루션을 ...하지만 난 게으른되고있어와 방탄 솔루션을 원하는 내 시행 착오를하지 않고 :-) – Nestor

+0

문제 없음 - 쿼리를 qrite하는 법을 물었습니다. ;-) –

3

는 여기에 또 다른 간단한 방법입니다 :

SELECT DISTINCT 
    O.ID , 
    O.Name AS TableName , 
    O.xtype 
    FROM 
    sysObjects O (NOLOCK) 
    INNER JOIN sysComments C (NOLOCK) ON O.ID = C.ID 
    WHERE 
    C.text LIKE '%<schema_name.function_name>%' 
    ORDER BY 
    XType , 
    TableName 
Before you run the following query, replace <schema_name.function_name> with a valid name 
1

난이 오래된 질문 알지만, 나 또한 내 자신의 해결책을 오는 동안 내가 나 자신을 보았다 알고있다.

더 이상 사용되지 않는 sys.sql_dependencies을 사용하는 대신 sys.dm_sql_referencing_entities 테이블 값 기능을 사용할 수 있습니다. 코드 테스트

DECLARE @table varchar(max); 
SET @table = 'schema.objectname'; 
;with 
DepsOn As (
    SELECT CAST(@table As varchar(max)) As parent 
     , CAST(l1.referencing_schema_name 
       + '.' 
       + l1.referencing_entity_name As varchar(max)) As child 
     , l1.referencing_class_desc As [description] 
     , 0 As Depth 
    FROM sys.dm_sql_referencing_entities(@table,'OBJECT') l1 
    UNION ALL 
    SELECT l2.child As parent 
     , cast(l2ca.referencing_schema_name 
       + '.' 
       + l2ca.referencing_entity_name As varchar(max)) As child 
     , l2ca.referencing_class_desc As [description] 
     , l2.Depth + 1 As Depth 
    FROM DepsOn l2 
    CROSS APPLY sys.dm_sql_referencing_entities(l2.child,'OBJECT') l2ca 
    ) 
SELECT * 
FROM DepsOn 
0

:

다음 쿼리는 종속 체인의 각 단계를 보여주는 종속성을 추적하는 재귀 적으로 호출합니다. 나는 그것을 실행하고 이동 내 필요한 출력을

SELECT referencing_schema_name, referencing_entity_name, 
    referencing_id, referencing_class_desc, is_caller_dependent 
    FROM sys.dm_sql_referencing_entities ('dbo.yourobject', 'OBJECT'); 
    GO 

VishalDream

관련 문제