我创建了一个表,可以记录有关 SP 被调用频率以及由谁调用的一些详细信息。
我已经能够向存储过程添加一些脚本,每次调用它都会触发。
但是,我们有很多要监控的存储过程,它们都需要添加这一行代码。
有没有办法将这一行代码标记到每个存储过程的末尾,而不必单独更新每一个?
谢谢
我创建了一个表,可以记录有关 SP 被调用频率以及由谁调用的一些详细信息。
我已经能够向存储过程添加一些脚本,每次调用它都会触发。
但是,我们有很多要监控的存储过程,它们都需要添加这一行代码。
有没有办法将这一行代码标记到每个存储过程的末尾,而不必单独更新每一个?
谢谢
如何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
没有内置的方法可以做到这一点。您可以将所有存储过程导出为文本,然后在 C# 中生成一个工具,例如添加您的行,但这不是您所要求的“纯 SQL”。