Ram*_*Ram 8 sql sql-server stored-procedures
我要求的是有一个可以执行和显示的存储过程
"以前运行的当前连接的所有SQL"和"当前未运行".
我已经搜索了很多关于这一点,我无法找到答案.请帮帮我.
Igo*_*nko 12
最好将Profiler用于此任务.
但是如果你想要一个查询,SQL Server 2005+你可以使用系统视图sys.dm_exec_query_stats,returns aggregate performance statistics for cached query plans但它只用于兑现计划和sys.dm_exec_sql_text.不幸的是,他们没有关于会话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
Run Code Online (Sandbox Code Playgroud)
在Oracle中:
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
Run Code Online (Sandbox Code Playgroud)
你也可以通过这些来运行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
Run Code Online (Sandbox Code Playgroud)
它对你有用.我猜