2


0

SQL Server 2008 Running 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の呼び出しであり、これは私が望んでいるものではありません。

1 Answer


2


詳細が動的管理ビューで利用できるかどうかはわかりませんが、session_idを取得してhttp://msdn.microsoft.com/en-us/library/ms187730.aspx[DBCC INPUTBUFFERで使用できます]探している詳細を取得します。

DBCC INPUTBUFFER(83)

例としてこのようなものを返します

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