此错误可能因以下其中一种情况而引起:
必须重新启动服务。
Windows 目录下的 System32 文件夹中缺少必需的文件。
必须重启 MSDTC 服务,或者 Windows 目录下的 System32 文件夹中缺少必需的文件。
重新启动 MSDTC
必须重新启动 Microsoft 分布式事务处理协调器服务 (MSDTC)。要停止并重新启动 MSDTC,请执行以下操作:
单击“开始”,再单击“命令提示符”。
在命令提示符下,键入“net stop msdtc”,然后按 Enter 键。
在命令提示符下,键入“net start msdtc”,然后按 Enter 键。
确认 System32 文件夹中存在必需的文件
要执行此过程,必须拥有“管理员”成员身份,或者必须指定了适当的权限。
要确认 System32 文件夹中存在必需的 Msdtcprx.dll 文件,请执行以下操作:
右键单击“开始”,再单击“资源管理器”。
导航到“Windows”文件夹。在详细信息窗格中,双击“System32”。
在“搜索”中,键入 msdtcprx.dll。如果文件存在,它将列在详细信息窗格中。如果文件不存在,请按照下列步骤进行操作。
要确认 System32 文件夹中存在必需的 Msdtcprx.dll 文件,请执行以下操作:
右键单击“开始”,再单击“资源管理器”。
导航到“Windows”文件夹。在详细信息窗格中,双击“System32”。
在“搜索”框中,键入“msdtcprx.dll”。如果文件存在,它将列在详细信息窗格中。
停止并重新启动 Microsoft 分布式事务处理协调器服务 (MSDTC)。
要停止并重新启动 MSDTC,请执行以下操作:
单击“开始”,再单击“命令提示符”。
在命令提示符下,键入“net stop msdtc”,然后按 Enter 键。
在命令提示符下,键入“net start msdtc”,然后按 Enter 键。
确认 MSDTC Trace 目录的存在情况和权限
Trace 目录可能已损坏,或者 Trace 目录上的权限可能已更改。要确认 Trace 目录存在且其权限仍然正确,请执行以下操作:
Microsoft 分布式事务处理协调器服务 (MSDTC) 无法在 Windows/System32/Msdtc 文件夹中找到 Trace 目录。可能缺少该目录,或可能未正确设置访问权限。
如果 Trace 目录不存在,请创建。如果 Trace 目录存在,请确认目录上的访问权限设置为“完全控制”。要检查目录上的权限,请确定运行 Microsoft 分布式事务处理协调器服务 (MSDTC) 的登录帐户。如果运行 MSDTC 的帐户未出现在权限列表中,请将该帐户添加为“用户”。
要执行这些过程,必须拥有“管理员”成员身份,或者必须指定了适当的权限。
检查 Trace 目录是否存在
要检查 Trace 目录是否存在,请执行以下操作:
右键单击“开始”,再单击“资源管理器”。
依次展开“Windows”、“System32”和“Msdtc”,然后查找“Trace”目录。如果“Trace”目录不存在,请创建。
如果不存在,请创建 Trace 目录
要创建 Trace 目录,请执行以下操作:
选择“Msdtc”文件夹。在“文件”菜单上,指向“新建”,然后单击“文件夹”。
在文件夹名称区域中,键入 Trace。
确定运行 MSDTC 的登录帐户
要确定运行 MSDTC 的登录帐户,请执行以下操作:
单击“开始”,再单击“运行”。
键入 services.msc,然后单击“确定”。如果显示“用户帐户控制”对话框,请确认显示的操作正是你要执行的操作,然后单击“继续”。
在服务列表中,找到并选择“分布式事务处理协调器”。
右键单击“分布式事务处理协调器”服务,然后单击“属性”。
单击“登录”选项卡上,记下“此帐户”框中的帐户。即运行 MSDTC 的帐户,例如“NetworkService”。
确保记下帐户名的准确拼写(包括大小写),以准备在下一步中将该帐户添加到具有权限的用户列表。
查看 Trace 目录上的访问权限
要查看 Trace 目录上的访问权限,请执行以下操作:
右键单击“开始”,再单击“资源管理器”。
依次展开“Windows”、“System32”和“Msdtc”,然后查找并选中“Trace”目录。
右键单击“Trace”目录,然后单击“属性”。
单击“安全性”选项卡,然后单击“高级”。
在权限列表中,找到运行 MSDTC 的帐户,并确认权限级别为“完全控制”。
如果运行 MSDTC 的帐户未出现在权限列表中,请将该帐户添加为“用户”。
将帐户添加为具有“完全控制”权限的用户
要将帐户添加为具有“完全控制”权限的用户,请执行以下操作:
右键单击“开始”,再单击“资源管理器”。
依次展开“Windows”、“System32”和“Msdtc”,然后查找并选中“Trace”目录。
右键单击“Trace”目录,然后单击“属性”。
在“属性”中,清除“只读”复选框。
单击“安全性”选项卡,然后单击“编辑”。
单击“添加”。如果显示“Windows 安全性”对话框,请输入域凭据,然后单击“确定”。
在“选择用户、计算机或组”对话框中,单击“对象类型”,然后选中“用户”复选框。
在“输入要选择的对象名称”框中,键入运行 MSDTC 的帐户的名称,然后单击“确定”
在“安全性”选项卡中的权限区域,选中“完全控制”旁边的“允许”复选框,然后单击“确定”。
如果显示“Windows 安全性”对话框,单击“是”,然后单击“确定”。
Target | Microsoft.MSDTC.6.3.Servers | ||
Category | EventCollection | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application |
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 |
<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>