消息队列无法在 Active Directory 中创建 MSMQ 对象。

Microsoft.MSMQ.10.0.Rule.Alert.Event2116 (Rule)

Knowledge Base article:

摘要

“消息队列”无法在 Active Directory 中创建 msmq(MSMQ 配置)对象。

原因

MSMQ 配置对象无法在 Active Directory 域服务 (AD DS) 中创建。此错误可能是由以下情况之一导致的:

解决方法

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

正在安装消息队列的用户没有在 AD DS 中创建子对象的相应权限

要确认正在安装消息队列的用户是域用户以及本地管理员安全组的成员,请执行以下操作:

未正确配置复制延迟

复制延迟存在问题。Active Directory 域服务 (AD DS) 进行自我复制后,此问题会得以解决。复制完成后,尝试再次创建 Active Directory 对象:

高级用户和域管理员还可以使用知识一致性检查器(KCC)来配置复制延迟。有关在大型网络中优化 Active Directory 复制的详细信息,请参阅 Microsoft 知识库中的文章 244368( http://go.microsoft.com/fwlink/?LinkId=107511)。

AD DS 中存在损坏的计算机对象

要确认存在过期的计算机对象,请执行以下操作:

过期对象会导致阻止 MSMQ 服务正常运行的问题。删除过期对象可能会解决此问题。但是,删除 Active Directory 域服务 (AD DS) 中的计算机对象会导致客户端计算机出现问题。在删除计算机对象之前,确保客户端计算机上运行的任何服务都不会受到影响。在这种情况下,删除消息队列 Active Directory 对象将删除此计算机上的公用队列。

您必须在远程服务器管理下的角色管理工具中安装 Active Directory 服务工具。

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

确认已安装 Active Directory 服务工具

要确认已安装 Active Directory 服务工具,请执行以下操作:

删除过期的计算机对象

要删除过期的计算机对象,请执行以下操作:

其他

有关更多信息,请参阅事件 ID 2116 ( http://technet.microsoft.com/zh-cn/library/dd337481(WS.10).aspx)

Element properties:

TargetMicrosoft.MSMQ.10.0.Servers
CategoryAvailabilityHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
消息队列无法在 Active Directory 中创建 MSMQ 对象。
{0}
Event LogApplication

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.Windows.EventProvider Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.MSMQ.10.0.Rule.Alert.Event2116" Enabled="false" Target="Microsoft.MSMQ.10.0.Servers" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>AvailabilityHealth</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>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventSourceName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="Microsoft.MSMQ.10.0.ServerRole"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>2116</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertOwner/>
<AlertMessageId>$MPElement[Name="Microsoft.MSMQ.10.0.Rule.Alert.Event2116.AlertName"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>