通过名字查找数据库名的通用存储过程
2006-06-26 15:01
507 查看
/*
很多时候,我们的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
很多时候,我们的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
相关文章推荐
- 千万条数据的通用存储过程分析
- 利用存储过程实现交叉表格式数据查询的一种通用方法
- 数据的存储过程(通过预处理)
- 通用的SQL数据分页存储过程
- 适合千万数据查询分页操作的一个通用存储过程
- 一个通用的数据分页的存储过程
- 一个通用的数据分页的存储过程
- SQLSERVER存储过程查找数据表中某列存在空值
- 通过存储过程的方式生成数据脚本
- 实现小数据量和海量数据的通用分页显示存储过程
- 实现小数据量和海量数据的通用分页显示存储过程
- (原) ODP.NET 演示通过存储过程的参数获取OracleClob数据
- proc 存储过程,通过存储过程往数据库的某个表中插入指定数据量的纪录,表中有primary key
- [百万级]通用分页存储过程.[千万级]实现千万级数据的分页显示!
- DAL层强类型数据集中有个方法通过存储过程RETURN 5,在BLL的类里怎样取得这个值?
- 通过调用过程把图片文存储到数据
- [转贴]一个通用的数据分页的存储过程
- C#开发学习笔记:C#通过存储过程创建数据表
- 实现小数据量和海量数据的通用分页显示存储过程
- 通过代码备份存储过程,package body 和表数据 并还原