DTC 出现需要进一步诊断的问题

Microsoft.MSDTC.6.3.Eventcollection.4424.4228 (Rule)

Knowledge Base article:

摘要

此错误可能因以下其中一种情况而引起:

原因

必须重启 MSDTC 服务,或者 Windows 目录下的 System32 文件夹中缺少必需的文件。

解决方案

重新启动 MSDTC

必须重新启动 Microsoft 分布式事务处理协调器服务 (MSDTC)。要停止并重新启动 MSDTC,请执行以下操作:

确认 System32 文件夹中存在必需的文件

要执行此过程,必须拥有“管理员”成员身份,或者必须指定了适当的权限。

要确认 System32 文件夹中存在必需的 Msdtcprx.dll 文件,请执行以下操作:

要确认 System32 文件夹中存在必需的 Msdtcprx.dll 文件,请执行以下操作:

停止并重新启动 Microsoft 分布式事务处理协调器服务 (MSDTC)。

要停止并重新启动 MSDTC,请执行以下操作:

确认 MSDTC Trace 目录的存在情况和权限

Trace 目录可能已损坏,或者 Trace 目录上的权限可能已更改。要确认 Trace 目录存在且其权限仍然正确,请执行以下操作:

Microsoft 分布式事务处理协调器服务 (MSDTC) 无法在 Windows/System32/Msdtc 文件夹中找到 Trace 目录。可能缺少该目录,或可能未正确设置访问权限。

如果 Trace 目录不存在,请创建。如果 Trace 目录存在,请确认目录上的访问权限设置为“完全控制”。要检查目录上的权限,请确定运行 Microsoft 分布式事务处理协调器服务 (MSDTC) 的登录帐户。如果运行 MSDTC 的帐户未出现在权限列表中,请将该帐户添加为“用户”。

要执行这些过程,必须拥有“管理员”成员身份,或者必须指定了适当的权限。

检查 Trace 目录是否存在

要检查 Trace 目录是否存在,请执行以下操作:

如果不存在,请创建 Trace 目录

要创建 Trace 目录,请执行以下操作:

确定运行 MSDTC 的登录帐户

要确定运行 MSDTC 的登录帐户,请执行以下操作:

确保记下帐户名的准确拼写(包括大小写),以准备在下一步中将该帐户添加到具有权限的用户列表。

查看 Trace 目录上的访问权限

要查看 Trace 目录上的访问权限,请执行以下操作:

如果运行 MSDTC 的帐户未出现在权限列表中,请将该帐户添加为“用户”。

将帐户添加为具有“完全控制”权限的用户

要将帐户添加为具有“完全控制”权限的用户,请执行以下操作:

如果显示“Windows 安全性”对话框,单击“是”,然后单击“确定”

Element properties:

TargetMicrosoft.MSDTC.6.3.Servers
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
RemotableTrue
Alert Message
DTC 出现需要进一步诊断的问题警报
DTC 出现需要进一步诊断的问题警报
Event LogApplication

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.EventProvider Default
Alert WriteAction System.Health.GenerateAlert Default
WriteToDB WriteAction Microsoft.SystemCenter.CollectEvent Default
WriteToDW WriteAction Microsoft.SystemCenter.DataWarehouse.PublishEventData Default

Source Code:

<Rule ID="Microsoft.MSDTC.6.3.Eventcollection.4424.4228" Enabled="onStandardMonitoring" Target="Microsoft.MSDTC.6.3.Servers" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Windows!Microsoft.Windows.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(4424|4228)$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(Microsoft-Windows-MSDTC|Microsoft-Windows-MSDTC Client)$</Pattern>
</RegExExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="Alert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>2</Severity>
<AlertName/>
<AlertDescription/>
<AlertOwner/>
<AlertMessageId>$MPElement[Name="Microsoft.MSDTC.6.3.Eventcollection.4424.4228.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
<Custom1/>
<Custom2/>
<Custom3/>
<Custom4/>
<Custom5/>
<Custom6/>
<Custom7/>
<Custom8/>
<Custom9/>
<Custom10/>
</WriteAction>
<WriteAction ID="WriteToDB" TypeID="SC!Microsoft.SystemCenter.CollectEvent"/>
<WriteAction ID="WriteToDW" TypeID="SCDW!Microsoft.SystemCenter.DataWarehouse.PublishEventData"/>
</WriteActions>
</Rule>