반응형
이번 글은 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문들을 볼 수 있다.
이렇게 보면, 해당하는 프로시저나 함수, 트리거들도 쉽게 볼 수 있다.
반응형
'IT > MSSQL' 카테고리의 다른 글
[MSSQL] MSSQL 계정 비밀번호 변경 후 로그인 안되는 문제 해결 방법 (0) | 2025.01.14 |
---|---|
[MSSQL] MSSQL the conversion of the varchar value '260903300200' overflowed an int column 문제 해결 방법 (0) | 2025.01.07 |
[MSSQL] MSSQL 날짜변환표 CONVERT(GETDATE) (0) | 2025.01.02 |
[MSSQL] MSSQL varchar(max) 정의 및 장단점 (0) | 2025.01.02 |
[MSSQL] MSSQL 모든 프로시저(PROCEDURE)와 함수(FUNCTION) 조회 방법 (0) | 2024.12.22 |
최근댓글