我的申请时间超过3天。 我可以在日志中看到应用程序执行一些SQL查询的时刻,这花了很多时间,可能是因为一些数据库锁。
我听说有这种情况的查询。因此,我需要能够询问所有查询,例如超过30分钟。可能吗?
答案 0 :(得分:7)
尝试一下:
SELECT TOP 10
total_worker_time/execution_count AS Avg_CPU_Time
,execution_count
,total_elapsed_time/execution_count as AVG_Run_Time
,(SELECT
SUBSTRING(text,statement_start_offset/2,(CASE
WHEN statement_end_offset = -1 THEN LEN(CONVERT(nvarchar(max), text)) * 2
ELSE statement_end_offset
END -statement_start_offset)/2
) FROM sys.dm_exec_sql_text(sql_handle)
) AS query_text
FROM sys.dm_exec_query_stats
ORDER BY AVG_Run_Time DESC
答案 1 :(得分:1)
使用 SQL Server Profiler 。
答案 2 :(得分:0)
您可以使用 SQL Server Profiler (您可以选择与SQL Server本身一起安装的单独工具)。
它有一个向导,可用于为长时间运行的查询设置跟踪。
答案 3 :(得分:0)
您可以通过查询动态管理视图来实现它。 SQL Server 2005 Performance Dashboard Reports还将揭示(实际上它们基于dmv)许多有用的性能相关信息。
请记住,当您重新启动sql server时,上述信息将丢失。
在sql server 2008中,您可以使用Data Collector
答案 4 :(得分:0)
在SQL Server Management Studio中,连接到您的服务器。然后,在对象资源管理器中右键单击服务器名称,然后单击“活动监视器”。 “最近的昂贵查询”将告诉你很多你想知道的事情。当你在那里时,尝试双击其中一个查询。