Sql server SQL Server 2008运行过程:如何获取xp\u cmdshell项?

Sql server SQL Server 2008运行过程:如何获取xp\u cmdshell项?,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,我使用此查询查找已运行很长时间的一些查询: 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 目前,我们

我使用此查询查找已运行很长时间的一些查询:

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 server中是否有任何方法可以做到这一点

编辑:活动会话正在从存储过程调用xp\u cmdshell。例如:

EXEC usp\U xxx->调用EXEC usp\U yyy->调用xp\U cmdshell


因此,DBCC InputBuffer的输出是对usp_xxx的调用,这不是我想要的。

我不确定在任何动态管理视图中是否有详细信息,但您可以获取会话id并使用它来获取所需的详细信息

DBCC INPUTBUFFER(83)
将返回类似这样的内容作为示例

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

啊,差不多了!EventInfo实际上是调用xp_cmdshell的父存储过程的“EXEC usp_blah”。