-
[MSSQL] 특정 테이블을 포함하는 SP, 함수 찾기, SP, 함수의 내용 검색개발(프로그래밍)/SQL(RDBMS) 2020. 4. 7. 22:29
대부분 개발 히스토리 전체를 알지 못한 상태에서
특정 기능 개발을 요청받는다.
이런 기능은 이미 개발되어 있을 것 같은데....
혹은 이 테이블은 어떻게 써야할까... 참고할만한 로직 없을까 싶을 때
특정 테이블을 참조하는 SP, 함수를 찾아보게 된다.
12345select so.namefrom dbo.syscomments sc with(nolock)inner join dbo.sysobjects so with(nolock) on sc.id = so.idwhere so.xtype in ('p', 'fn') -- xtype --> p : 저장프로시저, fn : 스칼라함수and sc.text like '%tbl_sample%'; -- 내가 찾고자 하는 검색어(테이블 이름 등)* SP와 함수는 다음과 같이 정의되어 있다.
123456789101112131415161718create procedure dbo.sp_sampleasbeginselect ts.*from dbo.tbl_sample tsendcreate function dbo.fn_sample()returns intasbegindeclare @result intselect @result = count(1)from dbo.tbl_sample tsreturn @resultend원리는 간단하다.
syscomments 라는 시스템 테이블의 text 컬럼에
SP, 함수의 작성 스크립트가 저장되어 있다.
이 컬럼을 like 구문으로 검색하면 된다.
굳이 테이블 이름이 아니어도 어떤 텍스트든 검색 가능하다는 의미다.
그리고 sysobjects라는 시스템 테이블의 xtype 컬럼에
각 object의 종류가 관리된다.
p는 프로시져이고, fn은 스칼라 함수다.
자세한 정보는 MS 공식 레퍼런스를 참조하자.
'개발(프로그래밍) > SQL(RDBMS)' 카테고리의 다른 글
[MSSQL] SQL Server DB서버 구축 및 SSMS 18 설치 (0) 2020.04.05 [MSSQL] 특정 테이블의 전체 행수 가져오기(Row count) (0) 2020.04.05