sql-server – 如何查找包含进程ID,进程名称,登录时间,用户,开始时间和持续时间的长时间运行查询?

任何人都可以帮我找到长期运行查询的下面给出的详细信息.
ProcessID,进程名称,数据库,主机,用户,进程登录时间,查询开始时间和查询持续时间.

我正在寻找一个查询或SP给我这个数据.

解决方法

正如评论所述,最好的工具是 sp_whoIsActiveAdam Machanic.它可以通过多种方式使用,以查看启动脚本时正在运行的内容,或者您​​可以在循环中运行它来监视某些特定操作,例如缓慢查询.

要循环运行,请查看此处:How to Log Activity Using sp_whoisactive in a Loop
要检测慢查询How to Use sp_WhoIsActive to Find Slow SQL Server Queries

您可以直接使用DMV来获取最慢的查询并从那里开始行动.检查Glenn Berry’s diagnostic queries.

最后,您可以使用此查询来查找最耗时的查询.您可以使用dm_exec_query_stats添加更多数据或与其他数据连接以获取更多信息.请注意,每次重新启动服务器时,dmv都会被刷新并刷新.

SELECT  creation_time,last_execution_time,total_physical_reads,total_logical_reads,total_logical_writes,execution_count,total_worker_time,total_elapsed_time,total_elapsed_time / execution_count avg_elapsed_time,SUBSTRING(st.text,(qs.statement_start_offset/2) + 1,((CASE statement_end_offset
          WHEN -1 THEN DATALENGTH(st.text)
          ELSE qs.statement_end_offset END
            - qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY total_elapsed_time / execution_count DESC;

编辑

新的选项已经有一段时间了,First Reponder Kit.是一组脚本,由BrentOzar团队在MIT license下免费提供,这将有助于各种任务,包括OP提出的任务.对于这种情况,主要是sp_BlitzFirst和sp_BlitzWho脚本.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...