데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

키워드로 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
1710 SQL Server 특정 세션에 대한 마지막 실행 문장 확인 jevida(강성욱) 2016.09.13 713
1709 DMV - 데이터베이스 버퍼 메모리 사용량 확인 jevida(강성욱) 2016.09.13 2909
1708 Sys.dm_fts_parser을 이용한 문자열 구문 분석 jevida(강성욱) 2016.09.13 1278
1707 DMV에서 SQL Server 리소스 데이터베이스 값 jevida(강성욱) 2016.09.13 1061
» 키워드로 PROCEDURE, FUNCTION 찾기 jevida(강성욱) 2016.09.13 1541
1705 BCP 사용 jevida(강성욱) 2016.09.13 3282
1704 DATEADD를 사용한 날짜 추가 및 빼기 jevida(강성욱) 2016.09.13 1153
1703 Change Data Capture(CDC) – 변경 이력 추적 jevida(강성욱) 2016.09.13 2372
1702 SSMS 에서 디버깅 하기 jevida(강성욱) 2016.09.13 6327
1701 CLR 등록 및 활성화 하기 jevida(강성욱) 2016.09.13 1537
1700 SQL Server 확장 이벤트를 사용한 Tempdb 병목현상 추적 jevida(강성욱) 2016.09.13 1602
1699 MAXDOP 설정 jevida(강성욱) 2016.09.13 1707
1698 SQL Server 이름 변경 하기 jevida(강성욱) 2016.09.13 1570
1697 SQL Server 마지막 시작 시간 확인 하기 jevida(강성욱) 2016.09.13 702
1696 여러 포트를 사용하도록 SQL Server 구성 jevida(강성욱) 2016.09.13 1772
1695 SQL Server가 사용중인 TCP/IP 포트 확인 jevida(강성욱) 2016.09.13 10655
1694 SQL Server SP_Congifure 변경 사항 캡처 jevida(강성욱) 2016.09.13 2061
1693 SQL Server Net Libraries jevida(강성욱) 2016.09.13 1103
1692 SQL Server 별칭 설정 및 사용 jevida(강성욱) 2016.09.13 2563
1691 SQL Server에 연결된 어플리케이션 드라이버 버전 확인 jevida(강성욱) 2016.09.13 864





XE Login