2010-10-05 23 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

相关问题