如何将SQL Server Profiler 2008的输出转储为类似CSV的文件

Ham*_*jan 40 sql-server-profiler tabular output-formatting

我正在调试存储过程,现在我感兴趣的是以什么顺序运行什么以及哪些参数与运行速度以及可能在哪些之间潜入并导致速度减慢相反.

所以,我抓住了几分钟的痕迹.问题是有太多的东西,我需要缩小范围.如果我这样做File -> Save As,我会得到以下选项:

  • 跟踪文件......
  • 跟踪模板......
  • 跟踪表......
  • 跟踪XML文件......
  • 用于重播的跟踪XML文件...

现在,这些都是不错的选择,但我真正想要的是表格格式,例如CSV.我认为SP trace中的逗号可能会搞乱CSV格式.我很乐意使用别的东西,比如||分隔符.

一旦我有表格格式,我可以使用grep等过滤它,然后用Python轻松处理它,看看我想要的确切内容.我开始使用脚本解析XML文件,但发现自己在跟踪XML文件格式上花了太多时间(之前没有使用过lxml库).

那么......有更简单的方法吗?我能以某种方式至少将它复制到Excel吗?

u07*_*7ch 65

如果将其保存到跟踪表中; 您可以在SQL Server中的表中获取数据,这样您就可以将其操作到您的内容中; 包括如果仍然需要将其转储为CSV.文本数据列在表中完整表示.


如果选择保存跟踪表.系统将提示您输入表和数据库的名称.让我们说你在数据库中称它为ProfilerTemp.

输入那些; 你可以使用查询表

select * from scratch.dbo.ProfilerTemp
Run Code Online (Sandbox Code Playgroud)

您将在表格的跟踪窗口中看到所有内容.如果你没有过滤到只是存储过程,只想在选择中

Select textdata from [Scratch].[dbo].[ProfilerTemp] 
  where eventclass = 10 
  And textdata like 'exec %' 
  and not cast(TextData as nvarchar(max))= 'exec sp_reset_connection'
Run Code Online (Sandbox Code Playgroud)

这会过滤掉非过程调用以及您可能具有的任何连接重置.您可能需要添加更多过滤器,具体取决于您尝试执行的操作.

如果你想把它作为文本文件; 选择查询 - 结果到文件并运行查询.这将提示输入文件名,并将参数文本作为文本文件提供.