전체 프로시저에서 특정 문자열 찾기 한방에검색

   

   

SysComments 사용

전체 데이터베이스에 포함된 각각의 프로시저에 포함된 특정 문자열을 찾기 위해 SysComments 의 Text 열에 저장되어 있는 원본 SQL 정의 문을 비교하여 찾는 방법입니다.

   

EXEC sp_MSForEachDB 'Use [?]; 

SELECT       DISTINCT DB_NAME() AS [DATABASE NAME], A.NAME

FROM         dbo.SysObjects A JOIN dbo.SysComments B ON A.ID = B.ID

WHERE        A.TYPE = ''P'' AND B.TEXT LIKE ''%EP_USER_TEMPEXTENDT%''

ORDER BY     A.NAME;'

   

   

sys.syscomments 가 추후 없어질 것을 대비해서 sys.all_sql_modules 를 사용해 확인할 수도 있습니다.

EXEC sp_MSForEachDB 'Use [?]; 

SELECT DISTINCT DB_NAME(), o.name FROM sys.sysobjects o

JOIN sys.all_sql_modules m ON o.id = m.object_id

WHERE o.type = ''P'' AND m.definition LIKE ''%EP_USER_TEMPEXTENDT%''

ORDER BY o.name;'

   

   

--데이터베이스 별로 검색 시

select distinct 'sp_helptext' + a.Name

From sysobjects a with (nolock)

join syscomments b with (nolock) on a.id = b.id

where --a.xtype = 'P' and

b.text Like '%EP_USER_TEMPEXTENDT%'

order by 'sp_helptext' + a.Name

   

a.xtype = 'P' : SP

a.xtype = 'TR' : 트리거

a.xtype = 'V' : 뷰

a.xtype = 'FN' : 함수

   

   




+ Recent posts