Sql server 2005 有没有办法在特定时间内找到最昂贵的查询?

Sql server 2005 有没有办法在特定时间内找到最昂贵的查询?,sql-server-2005,monitoring,Sql Server 2005,Monitoring,我确实问过这个问题。但这是我想做的- 我想运行我的.net应用程序,监视正在执行的sql查询,并且只监视那些与记录所有内容的sql profiler相比的查询 那么,有没有人知道我可以使用什么工具或方法来监视应用程序的查询,然后找出该会话中最昂贵的查询?使用服务器端SQL跟踪(而不是探查器GUI,因为这会增加更多开销)、过滤应用程序使用的spid、处理和聚合跟踪数据 RML实用程序将负责使用不同的文本列值(例如,使用不同的参数值调用相同的存储过程)对类似查询进行模板化,以便将它们聚合在一起。在到

我确实问过这个问题。但这是我想做的- 我想运行我的.net应用程序,监视正在执行的sql查询,并且只监视那些与记录所有内容的sql profiler相比的查询


那么,有没有人知道我可以使用什么工具或方法来监视应用程序的查询,然后找出该会话中最昂贵的查询?

使用服务器端SQL跟踪(而不是探查器GUI,因为这会增加更多开销)、过滤应用程序使用的spid、处理和聚合跟踪数据


RML实用程序将负责使用不同的文本列值(例如,使用不同的参数值调用相同的存储过程)对类似查询进行模板化,以便将它们聚合在一起。

在到SQL Server的应用程序连接字符串中,添加(OTTOMH)APPLICATION_NAME='ABC App'。所以实际上应该是这样的

'Server=YOURSERVERNAME;综合安全=SSPI;应用程序名称=ABC应用程序'

应用程序运行后,您可以在SQL Server Management Studio中运行
sp_who2
,以查看所有连接-检查此处以确保应用程序显示的是.Net应用程序的名称,而不是通用名称

*仔细检查这是应用程序名称还是应用程序名称*

在探查器中设置跟踪标志时,请转到“事件”选项卡,然后单击“列过滤器”。第一个是ApplicationName。将其设置为“%ABC App%”

  SELECT TOP 10 SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,
  ((CASE qs.statement_end_offset
  WHEN -1 THEN DATALENGTH(qt.TEXT)
  ELSE qs.statement_end_offset
  END - qs.statement_start_offset)/2)+1),
  qs.execution_count,
  qs.total_logical_reads, qs.last_logical_reads,
  qs.total_logical_writes, qs.last_logical_writes,
  qs.total_worker_time,
  qs.last_worker_time,
  qs.total_elapsed_time/1000000 total_elapsed_time_in_S,
  qs.last_elapsed_time/1000000 last_elapsed_time_in_S,
  qs.last_execution_time,
  qp.query_plan
  FROM sys.dm_exec_query_stats qs
  CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
  CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
  ORDER BY qs.total_logical_reads DESC