키워드로 PROCEDURE, FUNCTION 찾기

 

  • Version : SQL Server 2000, 2005, 2008, 2008R2, 2012

 

개발 과정에서 많이 받는 질문 중 하나가 특정 테이블(키워드)을 사용하는 프로시저를 모두 찾을 수 있냐는 것이다. 당연히 프로시저 안에서 테이블을 호출 하는 코드가 있다면 검색이 가능하다.

 

시스템 테이블과 INFORMATION_SCHEMA.ROUTINE 방법을 이용하여 검색하는 방법을 알아 보자.

 

[INFORMATION_SCHEMA.ROUTINE 사용]

INFORMATION_SCHEMA.ROUTINE 을 사용한 방법이다.

  • ROUTINE_DEFINITION : 사용자가 작성한 쿼리문
  • ROUTINE_TYPE에 : 프로시저 또는 함수 인지를 구분

 

프로시저 검색.

SELECT

    ROUTINE_NAME, ROUTINE_SCHEMA, CREATED, LAST_ALTERED, ROUTINE_DEFINITION

FROM INFORMATION_SCHEMA.ROUTINES

WHERE ROUTINE_DEFINITION LIKE '%PERSON%'

    AND ROUTINE_TYPE = 'PROCEDURE'

ORDER BY ROUTINE_NAME

 

 

 

함수 검색

SELECT

    ROUTINE_NAME, ROUTINE_SCHEMA, CREATED, LAST_ALTERED, ROUTINE_DEFINITION

FROM INFORMATION_SCHEMA.ROUTINES

WHERE ROUTINE_DEFINITION LIKE '%PERSON%'

    AND ROUTINE_TYPE = 'FUNCTION'

ORDER BY ROUTINE_NAME

 

 

 

[시스템 테이블 사용]

시스템 테이블에는 sys.sysobjects 와 sys.syscomments 테이블이 사용 된다. Sys.sysobjects 테이블은 데이터베이스의 모든 오브젝트 (테이블, 프로시저, 함수, FK 등)의 정보가 있으며 sys.syscomments 테이블에는 해당 오브젝트의 정의가 들어 있다. 두 테이블은 id로 조인 하면 된다.

SELECT

    A.NAME, A.CRDATE, A.REFDATE, B.TEXT

FROM SYS.SYSOBJECTS AS A

    INNER JOIN SYS.SYSCOMMENTS AS B

    ON A.ID = B.ID

WHERE B.TEXT LIKE '%PERSON%' AND A.TYPE = 'P'

ORDER BY A.NAME

 

 

 

스키마를 자주 변경하는 것은 좋지 못한 환경이지만 부득이하게 스키마를 변경해야 할 때 관련된 프로시저 및 함수를 찾을 때 매우 유용하게 사용 할 수 있을 듯 하다.



강성욱 / jevida@naver.com

Microsoft SQL Server MVP

Blog : http://sqlmvp.kr

Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 41794
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 22518
1714 DMV를 이용한 SQL Server 성능 카운터 확인 jevida(강성욱) 2016.09.13 1917
1713 DMV를 이용한 SQL Server IO 성능 모니터 스냅샷 만들기 jevida(강성욱) 2016.09.13 1301
1712 DMV를 활용한 SQL Server 모니터링 jevida(강성욱) 2016.09.13 1388
1711 세션에 따른 캐시된 쿼리 플랜 설정 확인 jevida(강성욱) 2016.09.13 929
1710 SQL Server 특정 세션에 대한 마지막 실행 문장 확인 jevida(강성욱) 2016.09.13 787
1709 DMV - 데이터베이스 버퍼 메모리 사용량 확인 jevida(강성욱) 2016.09.13 3157
1708 Sys.dm_fts_parser을 이용한 문자열 구문 분석 jevida(강성욱) 2016.09.13 1418
1707 DMV에서 SQL Server 리소스 데이터베이스 값 jevida(강성욱) 2016.09.13 1124
» 키워드로 PROCEDURE, FUNCTION 찾기 jevida(강성욱) 2016.09.13 1679
1705 BCP 사용 jevida(강성욱) 2016.09.13 3643
1704 DATEADD를 사용한 날짜 추가 및 빼기 jevida(강성욱) 2016.09.13 1211
1703 Change Data Capture(CDC) – 변경 이력 추적 jevida(강성욱) 2016.09.13 3124
1702 SSMS 에서 디버깅 하기 jevida(강성욱) 2016.09.13 9557
1701 CLR 등록 및 활성화 하기 jevida(강성욱) 2016.09.13 1775
1700 SQL Server 확장 이벤트를 사용한 Tempdb 병목현상 추적 jevida(강성욱) 2016.09.13 1697
1699 MAXDOP 설정 jevida(강성욱) 2016.09.13 2006
1698 SQL Server 이름 변경 하기 jevida(강성욱) 2016.09.13 1731
1697 SQL Server 마지막 시작 시간 확인 하기 jevida(강성욱) 2016.09.13 755
1696 여러 포트를 사용하도록 SQL Server 구성 jevida(강성욱) 2016.09.13 1953
1695 SQL Server가 사용중인 TCP/IP 포트 확인 jevida(강성욱) 2016.09.13 11703





XE Login