我正在尝试使用sql事件探查器(07 2008)对
this problem进行故障排除
在生产中运行跟踪几天后,最后再次发生错误,现在我正在尝试诊断原因.问题是跟踪有400k行,其中99.9%来自“报表服务器”,我甚至不知道为什么会这样,但它似乎每秒都在ping sql Server ……
有没有办法从跟踪中过滤掉一些记录,以便能够查看其余的记录?
我可以使用当前的.trc文件执行此操作,还是必须再次运行跟踪?
是否有其他应用程序可以查看可以为我提供此功能的.trc文件?
解决方法
您可以将捕获的跟踪加载到sql Server Profiler:
Viewing and Analyzing Traces with SQL Server Profiler.
或者您可以加载到像ClearTrace(免费版)这样的工具来执行工作负载分析.
您可以加载到sql Server表中,如下所示:
SELECT * INTO TraceTable FROM ::fn_trace_gettable('C:\location of your trace output.trc',default)
然后,您可以运行查询来聚合数据,例如:
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
另见:MS SQL Server 2008 – How Can I Log and Find the Most Expensive Queries?
在启动之前为捕获的跟踪设置过滤器也很常见.例如,常用的过滤器仅限于需要超过一定数量读取的事件,例如5000.