Data Scientist

[MSSQL] Search for Procedure (프로시져 검색) 본문

SQL

[MSSQL] Search for Procedure (프로시져 검색)

Cosmo-JH 2020. 8. 5. 12:27

MSSQL에서 프로시져의 사용량은 막대할 것이다. 그러나 그 안에 어떤 내용을 작성했는지 확인하고자 할 때 하나씩 직접 열어서 확인하지 않으면 그 내용을 볼 수 도 없기 때문에 불편함을 느낀다.

필자는 무려 테이블명 또는 중요 칼럼명이 바뀌는 경험을 해봤기 때문에 하나씩 찾아내는 불편함을 잘 알고 있다. 이번 포스팅에서는 추가적인 툴 설치 없이 쿼리만으로 프로시져 및 모듈을 검색하는 방법을 기술할 것이다.

다음 포스팅에서는 쿼리를 사용하지 않고 SQLSearch 라는 무료 툴에 대해 포스팅 할 예정이다. PC 성능이 여유롭다면 해당 툴을 설치해서 사용하기를 권장한다. (필자는 SQLSearch를 사용중이다)


1. KEYWORD가 포함된 프로시져 검색


SELECT 	ROUTINE_CATALOG,
	ROUTINE_SCHEMA,
	ROUTINE_NAME,
        ROUTINE_TYPE
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE '%KEYWORD%'
AND ROUTINE_TYPE = 'PROCEDURE'
ORDER BY ROUTINE_NAME
 
COLUMN_NAME DESCRIPTION
ROUTINE_CATALOG 데이터베이스 명칭
ROUTINE_SCHEMA 스키마 명칭
ROUTINE_NAME 모듈 명칭
ROUTINE_TYPE 모듈 유형

 

2. 검색조건이 포함된 모듈 검색


SELECT	O.NAME,
	O.TYPE_DESC,
    	M.DEFINITION
FROM SYS.SQL_MODULES M
INNER JOIN SYS.OBJECTS O ON(M.OBJECT_ID = O.OBJECT_ID)
WHERE M.DEFINITION LIKE '%messenger.dbo.tb_message%'
ORDER BY 2,1
 
COLUMN_NAME DESCRIPTION
NAME 모듈 명칭
TYPE_DESC 모듈 유형
DEFINITION 모듈 내용

 

상황에 따라서 프로시져 외에도 다양한 모듈을 검색할 수 있기 때문에 꽤 유용한 쿼리이다. 또한, 툴을 사용할 때보다 데이터베이스에서 직접 쿼리를 작성하여 실행하기 때문에 속도도 꽤 빠르다.

그러나, 빠른 검색은 가능하나 가독성이 떨어지는 단점을 갖고 있다.