遍历多个数据库,获取存储过程名等于某个值的列表

Aimis 2009-08-04 11:17:35
同台服务器,遍历多个数据库,获取存储过程名等于某个值的列表

结果如下:

数据库名 存储过程名

DB_1 P__AA_BB_CC
DB_2 P__AA_BB_CC
DB_3 P__AA_BB_CC
DB_4 P__AA_BB_CC
DB_5 P__AA_BB_CC
...全文
173 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
weichaozu131083 2009-08-05
  • 打赏
  • 举报
回复
alter procedure dbName.dbo.procName ...

不就行了,不过建议你用VB或者其它做一个工具来更新,更新前先备份(工具里可以帮你备份)
ks_reny 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wufeng4552 的回复:]
SQL codedeclare@sqlvarchar(max)select@sql=isnull(@sql+' union all','')+'select name from'+name+'..sysobjects where type=''p'' and name=''P__AA_BB_CC'''from sys.databaseswhere namelike'%db%'exec(@sql)
[/Quote]
頂水哥的.
黄_瓜 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 liangck 的回复:]
SQL codeDECLARE@name sysname;SET@name= N'cs'DECLARE@cmdNVARCHAR(4000);SET@cmd= N'
INSERT ##tb(dbname,procedureName)
SELECT''?'',name
FROM ?..sysobjects
¡­
[/Quote]
学习
水族杰纶 2009-08-04
  • 打赏
  • 举报
回复
declare @sql varchar(max)
select @sql=isnull(@sql+' union all ','')+'select name from '+name+'..sysobjects where type=''p'' and name=''P__AA_BB_CC ''' from sys.databases
where name like'%db%'
exec( @sql)
liangCK 2009-08-04
  • 打赏
  • 举报
回复

DECLARE @name sysname;
SET @name = N'cs'

DECLARE @cmd NVARCHAR(4000);
SET @cmd = N'
INSERT ##tb(dbname,procedureName)
SELECT ''?'',name
FROM ?..sysobjects
WHERE xtype=''P'' AND name LIKE N'''+@name+'''
';

CREATE TABLE ##tb(dbname sysname,procedureName sysname);

EXEC sp_MsForeachdb @cmd;

SELECT * FROM ##tb;

DROP TABLE ##tb;
sdhdy 2009-08-04
  • 打赏
  • 举报
回复

CREATE TABLE ##tb(dbname sysname,procedureName sysname);

exec sp_MsForeachdb N'
INSERT ##tb(dbname,procedureName)
SELECT ''?'',name
FROM ?..sysobjects
WHERE xtype=''p'' and name = ''P__AA_BB_CC''
';

SELECT * FROM ##tb;

DROP TABLE ##tb;
sdhdy 2009-08-04
  • 打赏
  • 举报
回复
--你的应该是SQ L2000
exec sp_MsForeachdb N'
INSERT ##tb(dbname,procedureName)
SELECT ''?'',name
FROM ?..procedures
WHERE name LIKE ''cs''
';
liangCK 2009-08-04
  • 打赏
  • 举报
回复
你的是sql server 2000?
Aimis 2009-08-04
  • 打赏
  • 举报
回复
老大,你这在sql2000下行么?
Aimis 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liangck 的回复:]
SQL codeCREATETABLE ##tb(dbname sysname,procedureName sysname);exec sp_MsForeachdb N'
INSERT ##tb(dbname,procedureName)
SELECT''?'',name
FROM ?.sys.procedures
¡­
[/Quote]
对象名 'Northwind.sys.procedures' 无效。
服务器: 消息 208,级别 16,状态 1,行 2
对象名 'pubs.sys.procedures' 无效。
服务器: 消息 208,级别 16,状态 1,行 2
对象名 'tempdb.sys.procedures' 无效。
liangCK 2009-08-04
  • 打赏
  • 举报
回复
CREATE TABLE ##tb(dbname sysname,procedureName sysname);

exec sp_MsForeachdb N'
INSERT ##tb(dbname,procedureName)
SELECT ''?'',name
FROM ?.sys.procedures
WHERE name LIKE ''cs''
';

SELECT * FROM ##tb;

DROP TABLE ##tb;
水族杰纶 2009-08-04
  • 打赏
  • 举报
回复
SELECT NAME FROM DB_1..SYSOBJECTS WHERE TYPE='P' AND NAME=''
UNION ALL
SELECT NAME FROM DB_2..SYSOBJECTS WHERE TYPE='P' AND NAME=''
UNION ALL
SELECT NAME FROM DB_3..SYSOBJECTS WHERE TYPE='P' AND NAME=''
UNION ALL
SELECT NAME FROM DB_4..SYSOBJECTS WHERE TYPE='P' AND NAME=''
UNION ALL
SELECT NAME FROM DB_5..SYSOBJECTS WHERE TYPE='P' AND NAME=''
--如果庫比較多,動態遍历
Aimis 2009-08-04
  • 打赏
  • 举报
回复
up
Aimis 2009-08-04
  • 打赏
  • 举报
回复
feixianxxx 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 aimis 的回复:]
就是有很多数据库中都有一个同名存储过程

现在这个存储过程改变了,那么我想能用语句把所有数据库中的这个存储过程都更新一下~
[/Quote]
你难道想改成都一样的?
Aimis 2009-08-04
  • 打赏
  • 举报
回复
就是有很多数据库中都有一个同名存储过程

现在这个存储过程改变了,那么我想能用语句把所有数据库中的这个存储过程都更新一下~
feixianxxx 2009-08-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 aimis 的回复:]
众位英雄,那能不能把这些存储过程一次性替换为更新后的存储过程??

[/Quote]
你要更新成怎么样的
Aimis 2009-08-04
  • 打赏
  • 举报
回复
up
Aimis 2009-08-04
  • 打赏
  • 举报
回复
众位英雄,那能不能把这些存储过程一次性替换为更新后的存储过程??
soft_wsx 2009-08-04
  • 打赏
  • 举报
回复
来晚了
补充点
 sp_MSforeachtable  --sp_MSforeachdb用法相同
@command1 nvarchar(2000), --第一条运行的T-SQL
@replacechar nchar(1) = N'?', --指定的占位符
@command2 nvarchar(2000) = null, --第二条运行的T-SQL
@command3 nvarchar(2000) = null, --第三条运行的T-SQL
@whereand nvarchar(2000) = null, --表的选择条件
@precommand nvarchar(2000) = null, --在表前执行的指令
@postcommand nvarchar(2000) = null --在表后执行的指令

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧