我创建了一个启动服务器端Profiler跟踪的存储过程。最初,我从Profiler的文件/导出/脚本跟踪定义选项生成了SQL脚本。我已经修改了一下以使其更友好。
该脚本执行以下操作:
exec sp_trace_create... -- creates the trace
exec sp_trace_setevent <traceID>, <eventID>, <columnID>, 1... (many of these per event)
exec sp_trace_setfilter...(a few filters)
exec sp_trace_setstatus <traceID>, 1 -- starts the trace
当跟踪完成并检查跟踪文件时,跟踪列将显示为任意顺序。它与我添加到每个跟踪事件的列的顺序不匹配。我希望列以不同的顺序出现。
使用服务器端跟踪时,有没有办法控制跟踪文件中列的顺序?
我们的产品在SQL Server版本2005到2012上运行,但需要特定数据库版本的答案很好。
另请注意,我知道扩展事件,但我特意寻找有关服务器端分析器跟踪的答案。
答案 0 :(得分:1)
正如Aaron Bertrand指出的那样,在写入跟踪文件时无法控制列的顺序。
可以使用函数sys.fn_trace_gettable
将跟踪数据检索到表中,然后以任何顺序从中选择数据。
也可以让服务器端跟踪将事件保存到表中。在creating the trace时,在跟踪属性中选择“保存到表”选项。