2013-09-24 26 views
1

我創建了一個表,可以記錄調用SP的頻率和人數的一些細節。大量更改存儲過程以包含新行代碼

我已經能夠添加一些腳本到存儲過程,每次調用它時都會觸發。

但是,我們有很多我們想要監視的存儲過程,他們都需要添加這一行代碼。

有沒有辦法將這一行代碼標記到每個存儲過程的末尾,而無需逐一更新每一個?

感謝

+2

我不這麼認爲,不要失去你的時間要求,並就去做...:d – jazzytomato

回答

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 
+0

通常是存儲過程與結束'END' - 你的代碼還能工作嗎? –

+0

它似乎工作正常 - 例如回答 – bhs

+0

這是一個好的開始。我想將過程的所有SQL導入到Excel中,然後生成一個可以自動編輯它們的文件。 – bushell

0

有沒有內置的方式做到這一點。您可以將所有存儲過程導出爲文本,然後使用C#生成一個工具,例如添加您的行,但這不是您要求的「純SQL」。