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”。