私が必要とするのは、実行して表示できる単一のストアドプロシージャを持つことです
「以前に実行された現在の接続のすべての SQL」および「現在実行されていない」。
私はこれについて多くのことを検索しましたが、答えを見つけることができません。これについて私を助けてください。
私が必要とするのは、実行して表示できる単一のストアドプロシージャを持つことです
「以前に実行された現在の接続のすべての SQL」および「現在実行されていない」。
私はこれについて多くのことを検索しましたが、答えを見つけることができません。これについて私を助けてください。
このタスクにはプロファイラーを使用することをお勧めします。
ただし、クエリがSQL Server 2005+
必要な場合は、システムビューsys.dm_exec_query_statsを使用できます。これは、キャッシュされたプランとsys.dm_exec_sql_textreturns aggregate performance statistics for cached query plans
にのみ適用されます。残念ながら、セッションIDに関する情報がないため、サーバーインスタンスのキャッシュされたクエリしか取得できません。
set transaction isolation level read uncommitted
select top 1000
creation_time,
last_execution_time,
case
when sql_handle IS NULL then ' '
else(substring(st.text,(qs.statement_start_offset+2)/2,(
case
when qs.statement_end_offset =-1 then len(convert(nvarchar(MAX),st.text))*2
else qs.statement_end_offset
end - qs.statement_start_offset)/2 ))
end as query_text,
db_name(st.dbid)as db_name,
object_schema_name(st.objectid, st.dbid)+'.'+object_name(st.objectid, st.dbid) as object_name
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(sql_handle) st
ORDER BY db_name, object_name
オラクルでは:
Oracle DB で実行中のプロセスを表示するにはどうすればよいですか?
SQL server 2005+
SPIDを使用して以前のものを見つけることができると思います。XXX SPID を使用してプロセスを取得します。たぶん、実行中のプロセスの SPID を取得し、実行中の SPID までループを作成できます。したがって、実行中のプロセスまですべてのプロセスを取得できます。
DECLARE @sqltxt VARBINARY(128)
SELECT @sqltxt = sql_handle
FROM sys.sysprocesses
WHERE spid = XXX
SELECT TEXT
FROM sys.dm_exec_sql_text(@sqltext)
GO
また、これらによって実行中のSQLステートメントを取得できます。
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
それはあなたにとって役に立ちます。私は推測する