2

このクエリを使用して、長時間実行されているいくつかのクエリを見つけています。

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 への呼び出しです。

4

1 に答える 1

2

詳細が動的管理ビューのいずれかで利用可能かどうかはわかりませんが、session_id を取得し、それをDBCC INPUTBUFFERで使用して、求める詳細を取得できます。

DBCC INPUTBUFFER(83)

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

EventType           Parameters      EventInfo
--------------      ----------      ------------------------
Language Event      0               EXEC xp_cmdshell 'sc /h'
于 2010-10-05T15:56:54.727 に答える