我应该去哪里获取tracefmt.exe?以及如何阅读我的MSDTC跟踪信息?

26

我按照微软的KB文章来开启MSDTC跟踪,但很遗憾这篇文章难以理解,因为它没有考虑读者的一些非常合理和显而易见的期望,具体来说:“我该如何读取这个二进制日志文件?” 我还阅读了MSDN文档,发现我无法读取日志文件,因为我缺少一个叫做tracefmt.exe的可执行文件, 看来这是个只有我遇到的问题。

因此,我的问题是:为什么我没有tracefmt.exe,我在哪里可以获取它?或者更直接地说:我该如何读取我的MSDTC跟踪日志?


Thomas Bratt提出的方法帮助我解决了这个问题(将exe从C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Bin \ x64复制到Trace文件夹中)。 - LCJ
8个回答

33

安装了Visual Studio 2010后,我在以下位置找到了工具:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64\TraceFmt.exe

然后我将.EXE文件复制到以下位置:

C:\Windows\System32\Msdtc\Trace

并按如下方式运行它:

TraceFmt.exe dtctrace.log.2012-06-13-10-38-57-0601-00

虽然大多数时候我使用msdtcvtr.bat,如下所示:

C:\Windows\System32\Msdtc\Trace\msdtcvtr.bat -tracelog dtctrace.log.2012-06-13-10-38-57-0601-00


3
无需下载任何东西,尤其是庞大的驱动程序套件。 - Sarkie
2
我刚刚将TraceFmt.exe从另一台服务器复制到同一个文件夹中,您可以直接使用或与批处理文件一起使用。非常好用! - Sanjay Zalke

19
为了避免下载600MB+的整个WDK,只为了下载200KB的文件,我选择了通过以下步骤进行4.7MB的下载:
  1. 从这里下载"Windows XP Service Pack 2支持工具": http://www.microsoft.com/downloads/details.aspx?FamilyId=49AE8576-9BB9-4126-9761-BA8011FABF38&displaylang=en
  2. 如果在XP上运行,只需提取并使用即可
  3. 如果在2003上运行(如我所在),您将收到一个错误消息,指出此工具仅可安装在XP上。因此,为了解决这个问题,请使用一个工具来提取exe文件。
  4. 在exe文件内部将会有一个support.cab,将其内容提取到某个位置
  5. 查找这两个文件:tracefmt.exetraceprt.dll。将它们复制到你的%windir%\system32\msdtc\trace目录下

1
它一直告诉我缺少 traceprt.dll,但是该 DLL 在路径中。我还尝试使用 regsvr32 注册它,但没有起作用。 - VVS
2
即使将traceprt.dll添加到C:\ Windows \ SysWow64中,它似乎在Windows 7 x64上无法正常工作(然后停止抱怨dll)。但是,使用来自Windows DDK的amd64版本的tracefmt.exe可以正常工作。 - Sergii Volchkov
确认:它不适用于Windows 7 x64,但是从amd64文件夹中获取的tracefmt.exe神奇地即使使用Intel处理器也能正常工作。 - YMC

12

DTC跟踪

分布式服务支持团队的博客详细介绍了如何跟踪DTC

Windows Driver Kit

接受的答案中的链接似乎已经失效。我找到了Windows Driver Kit主页最新下载链接

一旦你下载了ISO并且在安装界面上,选择Microsoft Windows Driver Kit,只选择完整开发环境下的工具。tracefmt.exe位于<install-path>\<version>\Tools\tracing\i386请确保您从64位或32位目录中复制tracefmt.exe的版本!

上面的博主将这些文件移动到了DTC文件夹%systemroot%\MsDtc\Trace,可能是为了使它们位于msdtcvtr.bat路径中。


1
如果生成跟踪的服务器是64位机器,则需要使用x64版本的exe。 - sdanna

12

1
谢谢!我希望记录 MSDTC 的人们能够包含这个重要的细节,而不是一直称之为“SDK”。 - Adam Ritenauer
如果您不想安装整个SDK,可以挂载ISO文件,进入WDK文件夹并找到tracingtool_x64fre_cab001.cab文件(根据您的架构选择x86或ia64),然后将文件_tracefmt.exe_00002提取到您选择的文件夹中。将该文件重命名为tracefmt.exe即可完成。 - spaghettidba

5
在寻找以上帖子(和其他地方)中的tracefmt.exe和traceprt.dll之后,我发现您需要64位版本的工具才能在Windows Server 2008上运行该程序。
我在这篇博客文章中找到了相关信息。
如果您安装了Visual Studio,则应该能够在本地计算机上找到exe和dll的64位和32位版本:
  • ProgramFiles\Microsoft SDKs\Windows\v6.0A\Bin\ (32位)
  • ProgramFiles\Microsoft SDKs\Windows\v6.0A\Bin\x64\ (64位)

真的很幸运能在 VS 2008 上找到它。不幸的是,在安装了 VS 2010 和 VS 2012 的系统上,我无法找到它,既不在 Program Files 下(不再有 Microsoft SDKs 子文件夹),也不在被移动的 Program Files (x86) 下。 - Evgeniy Berezovsky


1

经常需要使用现有的*.mof文件来编码跟踪文件。 在C:\Windows\System32\Msdtc\Trace\中可以看到msdtctr.mof。 该文件包含跟踪文件的描述,您需要像这样使用它:

tracefmt log_filename -tmf msdtctr.mof

0

我发现Darren和Thomas Bratt的答案非常有帮助,但是为了成功解析DTC文件并使用tracefmt,我必须提供tmf参数:

tracefmt -tmf msdtctr.mof dtctrace.log

否则,每个事件都会变成这样。
Unknown( 21): GUID=75f91e0e-d50c-47c9-b06f-3f2013e9da73 (No Format Information found).

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接