/*
很多时候,我们的sql server有很多数据库,当我们想得知有那些数据库包含有某个表、存储过程、视图、函数名,
例如想知道有那些数据库包含有表'Vender',
可以用下面的存储过程找出来所有包含表、存储过程、视图、函数名字为'Vender'的数据库名字。
*/use master
goif exists (select * from sysobjects where name = 'sp_getdbnamefromtb') 
begin
print 'drop procedure sp_getdbnamefromtb...'
drop PROCEDURE  sp_getdbnamefromtb
end 
gocreate 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 sysdatabasesbegin
open v_db_listfetch 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;
endselect * from @tb_find
close v_db_list;
deallocate v_db_list;
end 
gouse master
exec sp_getdbnamefromtb 'sysobjects'
go