如何转储从SQL Server 2008探查器的输出到CSV样文件

问题描述 投票:39回答:3

我调试的存储过程,而现在我很感兴趣,在什么跑什么样的顺序以及相对于快的东西如何运行,哪些可以与忙里偷闲,并导致经济放缓哪些参数。

所以,我捕捉到一丝值得的几分钟。问题是,有太多的东西,我需要将它缩小。如果我做File -> Save As,我得到了以下选项:

  • 跟踪文件...
  • 跟踪模板...
  • 跟踪表...
  • 登记领CML角...
  • 跟踪XML文件重播...

现在,这些都是不错的选择,但我真正想要的是一个表格格式,如CSV。我认为,在SP跟踪逗号大概会弄乱CSV格式。我很乐意用别的东西,比如||作为分隔符。

一旦我有表格格式,我可以使用grep等过滤下来,然后轻松地与Python处理它,看看具体的事情,我想。我开始解析与脚本的XML文件,但发现自己在跟踪XML文件格式花费太多时间(以前没有使用过lxml库)。

所以......有没有更简单的方法?可我至少把它复制到Excel不知何故?

tabular sql-server-profiler output-formatting
3个回答
64
投票

如果你保存它到一个跟踪表;你可以在SQL Server中的表,这将让你操纵它到你的心内容的数据;包括如果仍然需要为之倾倒出来的CSV。文本数据列在表中充分体现。


如果您选择保存→跟踪表。系统将提示您对表和数据库的名称。比方说,你叫它ProfilerTemp数据库中的划伤。

进入那些;您可以通过查询该表

select * from scratch.dbo.ProfilerTemp

你会看到在表中的跟踪窗口的一切。如果你没有过滤下降到只有存储过程,并希望他们只是在选择

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

这种过滤掉非过程调用和您的任何连接重置。您可能需要添加这取决于你正在尝试做更多的过滤器。

如果你想这个作为一个文本文件;选择查询 - 结果文件并运行查询。这将提示输入文件名,并给您的参数文本为文本文件。


3
投票

TL; DR:复制到一个文本编辑器,手动准备,然后粘贴到Excel中。

我与SQL Server的经验非常少,所以我不知道这是否会为别人打工,但它确实对我来说:

  • 选择SQL Server Profiler中所需的行。按Ctrl + C复制。
  • 粘贴到纯文本编辑器,可以做正则表达式搜索和替换(如记事本+ +在我的情况)。
  • 用正则表达式替换(N'(''')?[^']*?)\r\n(([^']*?)\r\n)?(([^']*?)\r\n)? $1 $4 $6 这将清除SQL脚本中的所有换行符。 继续做“全部替换”,直到没有找到结果。
  • 用正则表达式替换(Batch(Starting|Completed)[^\\]*?)\r\n $1 这将清除更多的SQL的东西换行。再次,不断替换,直到没有结果。
  • 用正则表达式替换\r\nset set 这将清除审核登录脚本中的所有换行符
  • 你可能需要做更多的更换,你的想法。
  • 粘贴到Excel中使用“文本导入向导”。使用标签作为分隔符。
  • 排序的第一列和删除任何无益的行(例如,“审核登录”在我的情况下)。您可能还需要在列手动将一些数据(例如“的EntityFramework”数据在我的情况)

0
投票

我有一堆包含我需要分析死锁跟踪事件SQL事件探查器跟踪文件。最后我把它们转换成使用SQL事件探查一个XML文件,然后阅读与Python是XML文件,并使用lxmlpandas库。

由于数据在大熊猫Dataframe结束了,你可以很容易地将其转换为CSV,Excel等或在Python分析它(如果你熟悉的熊猫)。

该脚本可以作为一个gist。它是专门写了死锁跟踪文件,因为我没有任何其他的痕迹可用。换句话说,你可能需要调整它一点点地服务于你的目的。如果XML文件较大(几百MBS)不要担心;脚本使用iterparse(),这意味着该文件将不会被读入内存,只有相关内容将被捕获。例如。约的xdl文件220MB在不到13秒解析。

保存跟踪文件的XML(扩展xdl):

Extract

确保你在一个文件中选择该选项的所有事件。

Save

© www.soinside.com 2019 - 2024. All rights reserved.