1

我创建了一个表,可以记录有关 SP 被调用频率以及由谁调用的一些详细信息。

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

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

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

谢谢

4

2 回答 2

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
于 2013-09-24T10:55:31.140 回答
0

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

于 2013-09-24T10:45:38.557 回答