通过名字查找数据库名的通用存储过程

/*
很多时候,我们的sql server有很多数据库,当我们想得知有那些数据库包含有某个表、存储过程、视图、函数名,
例如想知道有那些数据库包含有表'Vender',
可以用下面的存储过程找出来所有包含表、存储过程、视图、函数名字为'Vender'的数据库名字。
*/

use master
go

if exists (select * from sysobjects where name = 'sp_getdbnamefromtb')
begin
 print 'drop procedure sp_getdbnamefromtb...'
 drop PROCEDURE  sp_getdbnamefromtb
end
go

create procedure sp_getdbnamefromtb(@tb_name varchar(50))-- 寻找的表名
as
declare @n int
declare @db_name varchar(50) -- 临时数据库名变量
declare @sql nvarchar(200)
declare @tb_find table(name varchar(50)) --结果存放区

declare v_db_list cursor  for select name from sysdatabases

begin
open v_db_list

fetch next from v_db_list into @db_name;

while (@@fetch_status =0)
begin
 select @sql = 'select @count = count(1)  from '+@db_name +'.dbo.sysobjects where name = ''' + @tb_name +''''
 exec sp_executesql @sql,N'@count int out',@n out
 if @n > 0
 begin
   insert into @tb_find(name) values(@db_name); 
 end
 fetch next from v_db_list into @db_name; 
end

select * from @tb_find
close v_db_list;
deallocate v_db_list;
end
go

use master
exec sp_getdbnamefromtb 'sysobjects'
go

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值