我已经创建了一个表,可以记录SP被调用的频率以及由谁调用的一些细节。
我已经能够在存储过程中添加一些脚本,每次调用它时都会触发。
但是,我们要监控很多存储过程,他们都需要添加这一行代码。
有没有办法将这一行代码标记到每个存储过程的末尾,而不必单独更新每一行?
由于
答案 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”。