2013-11-23 53 views
2

我正在使用C#,SQL Server 2008和SQL管理對象,我需要知道是否有一種方法可以使用SMO/C#獲取當前正在執行的存儲過程。我有一些長期運行的存儲過程,我需要通過確定它們是空閒還是執行來監視它們的當前狀態。這可以用SMO完成嗎?如果是這樣,怎麼樣?如何使用SMO列出當前正在運行的存儲過程?

回答

1

您可能可以使用服務器對象上的EnumProccesses方法重新進入該方法。不過,我真的覺得這是一個「當你有錘子,一切看起來像釘子」的例子。也就是說,你就可以做很多與原始T-SQL更好地抵禦

0

我和Ben書爾同意,從here下面的SQL語句應該做的工作(雖然我的天堂」系統視圖像sys.dm_exec_requests視圖噸測試它):

SELECT requests.session_id, 
    requests.status, 
    requests.command, 
    requests.statement_start_offset, 
    requests.statement_end_offset, 
    requests.total_elapsed_time, 
    details.text 
FROM sys.dm_exec_requests requests 
CROSS APPLY sys.dm_exec_sql_text (requests.plan_handle) details 
WHERE requests.session_id > 50 
ORDER BY total_elapsed_time DESC