마이크로소프트 2000 서버에서 쿼리탐색기를 사용할 경우에는 테이블에서 바로 조회할수 있는 기능이 있지만,
마이크로소프트 2008 서버에서 관리스튜디오로 조회했을 경우에는 조회할 기능이 없다.
참고블로그 :
http://zmeun.tistory.com/category/SQL
SQL SERVER의 데이타베이스는 객체( 테이블, 스토아 프로지저, 인덱스, 뷰 등)에 대한 메타데이타 정보를 저장하고 있다.
1. 객체와 객체의 연관성에 대한 정보를 가지고 있는 테이블 : SYSDEPENDS
중요한 열이름은 ID(객체ID), DEPID(종속된 객체ID) 칼럼이다.
2. 객체 본인에 대한 기본정보를 가지고 있는 테이블 : SYSOBJECTS
중요한 열이름은 ID, XTYPE 칼럼이다. XTYPE의 코드와 코드명은 아래와 같다
C = CHECK 제약 조건
D = 기본값 또는 DEFAULT 제약 조건
F = FOREIGN KEY 제약 조건
L = 로그
FN = 스칼라 함수
IF = 인라인 테이블 함수
P = 저장 프로시저
PK = PRIMARY KEY 제약 조건(유형은 K)
RF = 복제 필터 저장 프로시저
S = 시스템 테이블
TF = 테이블 함수
TR = 트리거
U = 사용자 테이블
UQ = UNIQUE 제약 조건(유형은 K)
V = 뷰
X = 확장 저장 프로시저
** 테이블 ID를 가지고 해당 테이블을 사용하는 스토아프로시저 가져오기
SELECT DISTINCT O.NAME
FROM SYSDEPENDS AS D
INNER JOIN SYSOBJECTS AS O ON D.ID = O.ID
WHERE D.DEPID = [테이블ID] AND O.XTYPE = 'P'
** 테이블 ID 가져오기
SELECT ID FROM SYSOBJECTS WHERE NAME = “특정 테이블명”
** 특정 칼럼을 사용하고 있는 함수나 프로시저 가져오기
SELECT CASE O.XTYPE
WHEN 'P' THEN '저장 프로시져'
WHEN 'FN' THEN '함수'
END AS TYPE,
O.NAME
FROM SYSDEPENDS AS D
INNER JOIN SYSOBJECTS AS O ON D.ID = O.ID
WHERE D.DEPID IN
(SELECT O.ID
FROM SYSOBJECTS AS O
INNER JOIN SYSCOLUMNS AS C ON O.ID = C.ID
WHERE C.NAME = 'trace_yn' )
AND O.XTYPE IN ('P' , 'FN')
GROUP BY O.NAME, O.XTYPE
** syscomments 테이블도 메타데이타 정보를 가지고 있군요.
SQL SERVER
Find Stored Procedure Related to Table in Database
Search in All Stored Procedure
December 10, 2006 by
pinaldave
Following code will help to find all the Stored
Procedures (SP) which are related to one or more specific tables. sp_help and
sp_depends does not always return accurate results.
----Option 1
SELECT DISTINCT so.name
FROM
syscomments sc
INNER JOIN sysobjects so
ON sc.id=so.id
WHERE
sc.TEXT
LIKE '%tablename%'
----Option 2
SELECT DISTINCT o.name, o.xtype
FROM
syscomments c
INNER JOIN sysobjects o
ON c.id=o.id
WHERE c.TEXT LIKE '%tablename%'