2011-06-21 31 views
2

有沒有一個視圖或內部sp來執行此操作?如何檢測SQ​​L Server 2008 R2中是否運行存儲過程

例如,我有一個sp spGoesOnForSomeTime

如果我踢掉了這個,那麼有人關閉我的電腦,我怎麼看這是否仍在運行?

我意識到我可以使用SQL事件探查器和ActivityMonitor,但我最終希望通過Web應用程序將此信息傳回。

編輯:道歉,它不是本地連接。

回答

1

如果它在你的本地連接下運行,那麼它會停止並回滾,所以你可以確信它是而不是正在運行。

如果它在另一個連接的上下文中運行,則可以使用sp_who存儲過程來查看服務器上的所有活動(和活動連接),cmd列應爲您提供該命令。如果任何記錄的cmd列中都有您的程序名稱,那麼它會告訴您它正在執行。

但是,您可能希望採取更有意義的方法,並在過程啓動時設置某種標誌(另一個表中的行中的值,數據庫或過程的擴展屬性等)然後在過程完成時將其重置。這也將解釋您的過程在另一個過程中被調用的場景。

+0

簡單,當它拼寫出來給你!我已經有了開始/結束時間,我只是一個工具而沒有把拖曳和拖曳在一起。 –

1

如果從本地管理工作室運行它,SSMS關閉時連接將斷開(關閉)。

任何事務都會回滾,所有的鎖都會被釋放。如果你在一些巨大的數據更改中間的時候,你的PROC停止運行並連接仍然關閉,但回滾將繼續反正

所以沒必要根據給定的事實,檢查......

+1

對不起,誤導性信息gbn。 –

0

如果這是應用程序需求的一部分,那麼我會記錄所有對此存儲過程調用的開始和結束,然後有一個視圖來顯示存儲過程的哪些實例當前正在運行。

如果這是爲了維護數據庫,那麼我會使用sp_whosp_who2

編輯: 其實,sp_whosp_who2可能會顯示您當前正在運行的命令,不一定是存儲過程的名稱本身。您可以嘗試使用系統動態視圖sys.dm_exec_sql_text,但這並不總是準確。

+0

湯姆。感謝您指出正確的方向。 –

0

取決於您是使用SqlServerAgent運行它還是僅通過Mgmt Studio運行它。

正如@gbn所說,一旦斷開連接,任何使用該連接的工作都將停止。

我會說創建一個計劃的工作,然後它是獨立於您的連接。

相關問題