2010-10-05 50 views
2

我使用這個查詢發現,已經運行了很長時間的一些疑問:目前SQL Server 2008運行Procs:如何獲取xp_cmdshell項目?

SELECT sqltext.TEXT, 
req.session_id, 
req.status, 
req.command, 
req.cpu_time, 
req.total_elapsed_time 
FROM sys.dm_exec_requests req 
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext 
order by req.total_elapsed_time des 

,我們有一些xp_cmdshell的事情,似乎被卡住(我們用它打電話了的Bcp.exe批量出口工作)。但是,sys.dm_exec_sql_text()的輸出只輸出「xp_cmdshell」,而不是參數 - 我真的很想看到xp_cmdshell正在運行的命令,因此我可以跟蹤這些問題。

有什麼辦法可以做到這一點在SQL服務器?

編輯:活動會話正在從存儲過程調用xp_cmdshell。例如:

EXEC usp_xxx - >調用EXEC usp_yyy - >調用xp_cmdshell。

因此,DBCC InputBuffer的輸出是對usp_xxx的調用,這不是我想要的。

回答

2

我不確定在任何動態管理視圖中是否有詳細信息,但是您可以帶上session_id並使用它與DBCC INPUTBUFFER以獲取您要查找的詳細信息。

DBCC INPUTBUFFER(83) 

會回到這樣的事情作爲例子

EventType   Parameters  EventInfo 
--------------  ----------  ------------------------ 
Language Event  0    EXEC xp_cmdshell 'sc /h' 
+0

DOH,差不多! EventInfo實際上是調用xp_cmdshell的父存儲過程的「EXEC usp_blah」。 – 2010-10-05 18:27:51

相關問題