为了打开 MSDTC 跟踪,我遵循了 MS 的知识库文章。不幸的是,这很难理解,因为它没有假设读者有一个非常合理和明显的期望,特别是“我如何阅读这个二进制日志文件?” 我也从 MSDN阅读了这个页面,在那里我发现我无法读取日志文件,因为我缺少一些名为 的可执行文件tracefmt.exe
,而且我显然是唯一一个遇到这个问题的人。
因此我的问题是:为什么我没有 tracefmt.exe,我从哪里得到它?或者,直截了当:如何阅读我的 MSDTC 跟踪日志?
为了打开 MSDTC 跟踪,我遵循了 MS 的知识库文章。不幸的是,这很难理解,因为它没有假设读者有一个非常合理和明显的期望,特别是“我如何阅读这个二进制日志文件?” 我也从 MSDN阅读了这个页面,在那里我发现我无法读取日志文件,因为我缺少一些名为 的可执行文件tracefmt.exe
,而且我显然是唯一一个遇到这个问题的人。
因此我的问题是:为什么我没有 tracefmt.exe,我从哪里得到它?或者,直截了当:如何阅读我的 MSDTC 跟踪日志?
安装 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
为了节省下载所有 WDK (600MB+) 的费用,仅下载 200KB 的文件,我通过执行以下操作选择了 4.7MB 的下载:
support.cab
,把这个的内容解压到某个地方tracefmt.exe
然后traceprt.dll
. 将这些复制到您的%windir%\system32\msdtc\trace
目录Windows Driver Kit (WDK) 中提供了 tracefmt(和更易于使用的 traceview)。可在此处获得: http: //www.microsoft.com/en-us/download/details.aspx ?displaylang=en&id=11800 。它在 WDK 中,因为这种跟踪技术更常用于设备驱动程序中。
分布式服务支持团队博客详细介绍了如何跟踪 DTC 。
已接受答案中的链接似乎已损坏。我找到了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
路径中。
在从上述帖子(和其他地方)中搜索 tracefmt.exe 和 traceprt.dll 后,我发现您需要 64 位版本的工具才能在 Windows Server 2008 上运行该程序。
我找到了这篇博文。
并发现如果您安装了 Visual Studio,您应该能够在本地计算机上找到 exe 和 dll 的 64 位和 32 位版本:
Tracefmt.exe 附带 Windows 驱动程序工具包。
很多时候,您应该使用现有的 *.mof 文件来编码跟踪文件。在 C:\Windows\System32\Msdtc\Trace\ 你可以看到 msdtctr.mof。这个文件有跟踪文件的描述,你需要像这样使用它:
tracefmt log_filename -tmf msdtctr.mof
我发现 Darren 和 Thomas Bratt 的回答很有帮助,但是为了使用 成功解析 DTC 文件tracefmt
,我必须提供tmf
参数:
tracefmt -tmf msdtctr.mof dtctrace.log
否则,每个事件都会变成类似
Unknown( 21): GUID=75f91e0e-d50c-47c9-b06f-3f2013e9da73 (No Format Information found).