반응형

이번 글은 MS-SQL에서 특정 문자가 들어간 프로시저나 함수, 뷰, 트리거를 찾기 위해 사용하는 쿼리를 정리한다.

 

테이블 작업을 할 때, 테이블에 데이터가 INSERT가 되거나, UPDATE, DELETE 등이 진행될 때 어떤 프로시저나 트리거, 뷰, 함수에서 진행이 되는지 확인하고 싶을 때 로직을 추적하면 되겠지만, 그렇지 않을 경우에는 테이블 명을 가지고 찾아야 한다.

 

그럴 때 사용하는 것이 아래의 쿼리다.

   SELECT B.NAME       AS NAME
        , B.TYPE_DESC  AS TYPE
        , A.DEFINITION AS CONTENTS
     FROM SYS.SQL_MODULES A (NOLOCK)
LEFT JOIN SYS.OBJECTS B (NOLOCK) 
       ON A.OBJECT_ID = B.OBJECT_ID
    WHERE A.DEFINITION LIKE '%TEST%'
 ORDER BY TYPE, NAME

 

위의 쿼리를 실행하면, 표로 결과가 나올 수도 있지만, 표로 보는 것보다 나는 아래와 같이, 공백이 많은 것에 나오는게 더 보기 편해서 아래와 같이도 할 수 있다.

 

그래서, 위의 쿼리를 실행하면 "TEST"라는 문구가 들어간 프로시저, 뷰, 함수, 트리거가 있는 것들이 다 나오게 된다. 티베로나 오라클에서는 그래도 조금 쉽게 찾을 수 있었는데, MS-SQL은 상대적으로 티베로나 오라클보다 조금 복잡하다.

 

위의 쿼리 중 아래처럼 SYS.OBJECTS를 조회를 하면, 아래처럼 해당하는 저장 프로시저나 트리거, 뷰, 함수 등 등록된 것들이 다 나온다.

 SELECT *
   FROM SYS.OBJECTS (NOLOCK);

 

아래와 같이, SYS.SQL_MODULES에서 모든 것을 검색하면 위의 SYS.OBJECTS의 OBJECT_ID 에 해당하는 SQL 문들이 다 나오게 된다.

 SELECT *
   FROM SYS.SQL_MODULES (NOLOCK);

위처럼, OBJECT_ID에 따른 SQL문들을 볼 수 있다.

이렇게 보면, 해당하는 프로시저나 함수, 트리거들도 쉽게 볼 수 있다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기