본문 바로가기
MS-SQL

[MSSQL] 다중 DB에서 특정 문자열 검색 쿼리

by 김뽀씨 2018. 1. 15.

USE MASTER

DECLARE @SQL VARCHAR(MAX);
DECLARE @DB VARCHAR(20);
DECLARE @SP_NAME VARCHAR(100);

SET @SP_NAME = 'SP'

SELECT name INTO #TABLE_DB
FROM sys.databases ; 

ALTER TABLE #TABLE_DB ADD NO_SEQ INT IDENTITY (1, 1) NOT NULL;

DECLARE @CNT INT;

SELECT @CNT = COUNT(*)
FROM #TABLE_DB

DECLARE @INIT INT

SET @INIT = 1;

WHILE @INIT <= @CNT
BEGIN
 SET @DB = '';
 SET @SQL = '';

 SELECT @DB = name
   FROM #TABLE_DB
  WHERE NO_SEQ = @INIT;

 
 SET @SQL = 'SELECT ''' + @DB + ''' AS DB, ROUTINE_NAME
                  FROM ['+@DB+'].INFORMATION_SCHEMA.ROUTINES
                 WHERE ROUTINE_DEFINITION LIKE ''%'+@SP_NAME+'%''
                   AND ROUTINE_TYPE=''PROCEDURE''
                 ORDER BY ROUTINE_NAME';

 EXEC (@SQL)

 SET @INIT = @INIT + 1;
END

DROP TABLE #TABLE_DB