有没有办法过滤SQL事件探查器跟踪?

Dan*_*ola 11 trace filter sql-server-profiler sql-server-2008

我正在尝试使用SQL事件探查器解决此问题(SQL 2008)

在生产中运行跟踪几天后,最后再次发生错误,现在我正在尝试诊断原因.问题是跟踪有400k行,其中99.9%来自"报表服务器",我甚至不知道为什么会这样,但它似乎每秒都在ping SQL Server ......

有没有办法从跟踪中过滤掉一些记录,以便能够查看其余的记录?
我可以使用当前的.trc文件执行此操作,还是必须再次运行跟踪?
是否有其他应用程序可以查看可以为我提供此功能的.trc文件?

Mit*_*eat 25

您可以将捕获的跟踪加载到SQL Server Profiler:使用SQL Server Profiler查看和分析跟踪.

或者您可以加载到ClearTrace(免费版)之类的工具来执行工作负载分析.

您可以加载到SQL Server表中,如下所示:

SELECT * INTO TraceTable
FROM ::fn_trace_gettable('C:\location of your trace output.trc', default)
Run Code Online (Sandbox Code Playgroud)

然后,您可以运行查询来聚合数据,例如:

SELECT 
  COUNT(*) AS TotalExecutions,     
  EventClass, 
  CAST(TextData as nvarchar(2000)) ,
  SUM(Duration) AS DurationTotal ,
  SUM(CPU) AS CPUTotal ,
  SUM(Reads) AS ReadsTotal ,
  SUM(Writes) AS WritesTotal
FROM 
  TraceTable
GROUP BY 
  EventClass, 
  CAST(TextData as nvarchar(2000))
ORDER BY 
  ReadsTotal DESC
Run Code Online (Sandbox Code Playgroud)

另请参阅:MS SQL Server 2008 - 如何记录和查找最昂贵的查询?

在启动之前为捕获的跟踪设置过滤器也很常见.例如,常用的过滤器仅限于需要超过一定数量读取的事件,例如5000.