批量修改存储过程以包含新的代码行

时间:2013-09-24 10:39:15

标签: sql-server tsql stored-procedures

我已经创建了一个表,可以记录SP被调用的频率以及由谁调用的一些细节。

我已经能够在存储过程中添加一些脚本,每次调用它时都会触发。

但是,我们要监控很多存储过程,他们都需要添加这一行代码。

有没有办法将这一行代码标记到每个存储过程的末尾,而不必单独更新每一行?

由于

2 个答案:

答案 0 :(得分:3)

如何使用以下内容生成新的ALTER PROCEDURE行?

select REPLACE(ROUTINE_DEFINITION, 'CREATE PROCEDURE', 'ALTER PROCEUDRE') 
+ '**YOUR NEW LINE**;' as 'Def' 
from INFORMATION_SCHEMA.ROUTINES
where ROUTINE_TYPE = 'PROCEDURE'

这里有一个简单的例子:

create procedure Hello
as
print 'Hello';
GO

select REPLACE(ROUTINE_DEFINITION, 'CREATE PROCEDURE', 'ALTER PROCEDURE') + ' print ''World'';' as 'Def' 
from INFORMATION_SCHEMA.ROUTINES
where ROUTINE_NAME = 'Hello'

ALTER PROCEDURE Hello
as
print 'Hello';
 print 'World';

exec Hello

答案 1 :(得分:0)

没有内置方法可以做到这一点。您可以将所有存储过程导出为文本,然后在C#中生成一个工具,例如添加您的行,但这不是您所要求的“纯SQL”。