查询某台服务器下所有的数据库中包含某个关键词的存储过程 或 视图

USE MASTER
GO
 
if exists(select * from tempdb..sysobjects where id=object_id('tempdb..#tmpResult'))
begin
	drop table #tmpResult
end

create table #tmpResult
(
	DbName varchar(100),
	SpOrViewName varchar(100),
	[Type] varchar(2),
	Content varchar(100)
)
go
 
DECLARE @dbname VARCHAR(100)
DECLARE @sql VARCHAR(1000)
DECLARE @searchKeyword VARCHAR(100)

	SET @searchKeyword='member_system_member_id'

DECLARE dbname_cursor SCROLL CURSOR FOR
Select Name FROM Master..SysDatabases order by Name 

OPEN dbname_cursor
FETCH  next FROM dbname_cursor INTO @dbname

WHILE @@fetch_status=0
BEGIN
	FETCH  next FROM dbname_cursor INTO @dbname
	set @sql='
USE [' + @dbname + ']'

	set @sql=@sql + '
insert into #tmpResult 
select ''' + @dbname + ''' as DbName,a.name as SpOrViewName,a.[type]
	,case when len(b.[definition]) > 100  then substring(b.[definition],1,100)
		else b.[definition]  end 
	as Content
from sys.all_objects a,sys.sql_modules b 
where a.is_ms_shipped=0 and a.object_id = b.object_id 
and a.[type] in (''P'',''V'',''AF'') 
and b.[definition] like ''%' + @searchKeyword + '%''' -- db fields,dbName etc
--order by a.[name] asc
	
	BEGIN try
		EXEC(@sql)
		--print @sql
	END TRY
	BEGIN CATCH
		IF(@@ERROR<>0)
		BEGIN
			PRINT ERROR_MESSAGE()
		END
	END catch
END

CLOSE dbname_cursor
DEALLOCATE dbname_cursor
GO

select * from tempdb..#tmpResult

drop table #tmpResult


执行结果


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值