有沒有一個視圖或內部sp來執行此操作?如何檢測SQL Server 2008 R2中是否運行存儲過程
例如,我有一個sp spGoesOnForSomeTime
。
如果我踢掉了這個,那麼有人關閉我的電腦,我怎麼看這是否仍在運行?
我意識到我可以使用SQL事件探查器和ActivityMonitor,但我最終希望通過Web應用程序將此信息傳回。
編輯:道歉,它不是本地連接。
有沒有一個視圖或內部sp來執行此操作?如何檢測SQL Server 2008 R2中是否運行存儲過程
例如,我有一個sp spGoesOnForSomeTime
。
如果我踢掉了這個,那麼有人關閉我的電腦,我怎麼看這是否仍在運行?
我意識到我可以使用SQL事件探查器和ActivityMonitor,但我最終希望通過Web應用程序將此信息傳回。
編輯:道歉,它不是本地連接。
如果它在你的本地連接下運行,那麼它會停止並回滾,所以你可以確信它是而不是正在運行。
如果它在另一個連接的上下文中運行,則可以使用sp_who
存儲過程來查看服務器上的所有活動(和活動連接),cmd
列應爲您提供該命令。如果任何記錄的cmd
列中都有您的程序名稱,那麼它會告訴您它正在執行。
但是,您可能希望採取更有意義的方法,並在過程啓動時設置某種標誌(另一個表中的行中的值,數據庫或過程的擴展屬性等)然後在過程完成時將其重置。這也將解釋您的過程在另一個過程中被調用的場景。
如果從本地管理工作室運行它,SSMS關閉時連接將斷開(關閉)。
任何事務都會回滾,所有的鎖都會被釋放。如果你在一些巨大的數據更改中間的時候,你的PROC停止運行並連接仍然關閉,但回滾將繼續反正
所以沒必要根據給定的事實,檢查......
對不起,誤導性信息gbn。 –
如果這是應用程序需求的一部分,那麼我會記錄所有對此存儲過程調用的開始和結束,然後有一個視圖來顯示存儲過程的哪些實例當前正在運行。
如果這是爲了維護數據庫,那麼我會使用sp_who
或sp_who2
。
編輯: 其實,sp_who
和sp_who2
可能會顯示您當前正在運行的命令,不一定是存儲過程的名稱本身。您可以嘗試使用系統動態視圖sys.dm_exec_sql_text
,但這並不總是準確。
湯姆。感謝您指出正確的方向。 –
取決於您是使用SqlServerAgent運行它還是僅通過Mgmt Studio運行它。
正如@gbn所說,一旦斷開連接,任何使用該連接的工作都將停止。
我會說創建一個計劃的工作,然後它是獨立於您的連接。
簡單,當它拼寫出來給你!我已經有了開始/結束時間,我只是一個工具而沒有把拖曳和拖曳在一起。 –