2009.09.21 00:00
여러 Database를 관리할때 특정 문구가 들어있는 Procedure를 찾고자 할때 사용할 수 있다.
USE master
DECLARE curj CURSOR
FOR
SELECT name AS DBNAME
FROM master..sysdatabases
WHERE databasepropertyex(name, 'status')='ONLINE'
AND name NOT IN ('master','tempdb','model','msdb','pubs','Northwind')
OPEN curj
declare @strSQL nvarchar(4000)
declare @DBNAME varchar(30)
declare @ProcecureNm varchar(50)
declare @srchstr varchar(50)
DECLARE @params nvarchar(100)
DECLARE @retval bit
set @ProcecureNm=''
set @srchstr='sync'
FETCH NEXT FROM curj INTO @DBNAME
WHILE @@FETCH_STATUS = 0
BEGIN
set @strSQL = 'SET @IsExists=0'
set @strSQL = @strSQL + 'IF EXISTS(SELECT A.NAME FROM '+@DBNAME+'..SYSOBJECTS A, '+@DBNAME+'..SYSCOMMENTS B '
set @strSQL = @strSQL + ' WHERE A.ID = B.ID '
if @ProcecureNm<>''
begin
set @strSQL = @strSQL + ' AND A.NAME='''+@ProcecureNm+''''
end
if @srchstr<>''
begin
set @strSQL = @strSQL + ' AND B.TEXT LIKE ''%'+@srchstr+'%'''+ CHAR(10)
end
set @strSQL = @strSQL + ' )'+ CHAR(10)
set @strSQL = @strSQL + ' SET @IsExists=1'+ CHAR(10)
set @strSQL = @strSQL + 'ELSE'+ CHAR(10)
set @strSQL = @strSQL + ' SET @IsExists=0'+ CHAR(10)
SET @params = ' @IsExists AS bit OUTPUT' -- OUTPUT 키워드에 주의
EXEC sp_executesql @strSQL, @params, @IsExists = @retval OUTPUT
IF @retval=0
print @DBNAME + ' 없음'
FETCH NEXT FROM curj INTO @DBNAME
END
CLOSE curj
DEALLOCATE curj
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
7 | Excel Data를 MSSQL로 import시 숫자를 문자열로 바꿀때 E로 변경되는 문제 [2010.11.23 ] | kaiserhan | 2010.11.23 | 49677 |
6 | Excel Data를 MSSQL로 import시 에러 발생 [2010.10.05] | kaiserhan | 2010.10.05 | 56015 |
5 | ADO DataTypeEnum | kaiserhan | 2010.05.06 | 114958 |
4 | sysobjects.xtype구분 | kaiserhan | 2010.01.11 | 42067 |
3 | FK 조회 | kaiserhan | 2009.10.20 | 42167 |
2 | MSSQL Column이름 변경 | kaiserhan | 2009.09.28 | 41910 |
» | MSSQL Procedure 내용 검색 | kaiserhan | 2009.09.21 | 42480 |