“消息队列”无法在 Active Directory 中创建 msmq(MSMQ 配置)对象。
MSMQ 配置对象无法在 Active Directory 域服务 (AD DS) 中创建。此错误可能是由以下情况之一导致的:
正在安装消息队列的用户没有在 AD DS 中创建子对象的相应权限。
未正确配置复制延迟。
AD DS 中存在损坏的计算机对象。
要执行这些过程,必须拥有“管理员”成员身份,或者已向你委派了适当的权限。
正在安装消息队列的用户没有在 AD DS 中创建子对象的相应权限
要确认正在安装消息队列的用户是域用户以及本地管理员安全组的成员,请执行以下操作:
打开“计算机管理”控制台。要打开“计算机管理”,请单击“开始”。在搜索框中,键入“compmgmt.msc”,然后按 Enter。
在控制台树中,依次展开“系统工具”、“本地用户和组”,然后单击“组”。
在详细信息窗格中,双击 Administrators。
在“成员”部分中,确认用户是该组(Administrators)的成员。
如果用户不是该组的成员,请参阅标题为“授予相应权限”的部分。
未正确配置复制延迟
复制延迟存在问题。Active Directory 域服务 (AD DS) 进行自我复制后,此问题会得以解决。复制完成后,尝试再次创建 Active Directory 对象:
对于较小的网络,复制需要几分钟时间。
对于较大的网络,复制所需时间较长。
高级用户和域管理员还可以使用知识一致性检查器(KCC)来配置复制延迟。有关在大型网络中优化 Active Directory 复制的详细信息,请参阅 Microsoft 知识库中的文章 244368( http://go.microsoft.com/fwlink/?LinkId=107511)。
AD DS 中存在损坏的计算机对象
要确认存在过期的计算机对象,请执行以下操作:
单击“开始”,指向“管理工具”,右键单击“Active Directory 用户和计算机”,然后单击“以管理员身份运行”。
在“视图”菜单上,确保选中“用户、联系人、组和计算机作为容器”,并且选中“高级功能”。
浏览至特定计算机。检查此计算机下是否存在消息队列对象。
如果存在消息队列对象,而该特定计算机上未安装具有 Active Directory 集成的“消息队列”,则这些对象为过期对象。
如果确定存在过期对象,请按照以下步骤操作
过期对象会导致阻止 MSMQ 服务正常运行的问题。删除过期对象可能会解决此问题。但是,删除 Active Directory 域服务 (AD DS) 中的计算机对象会导致客户端计算机出现问题。在删除计算机对象之前,确保客户端计算机上运行的任何服务都不会受到影响。在这种情况下,删除消息队列 Active Directory 对象将删除此计算机上的公用队列。
您必须在远程服务器管理下的角色管理工具中安装 Active Directory 服务工具。
要执行这些过程,必须拥有“管理员”成员身份,或者已向你委派了适当的权限。
确认已安装 Active Directory 服务工具
要确认已安装 Active Directory 服务工具,请执行以下操作:
单击“开始”,指向“管理工具”,右键单击“Active Directory 用户和计算机”,然后单击“以管理员身份运行”。
确认列表中出现以下 Active Directory 工具:
Active Directory 域和信任关系
Active Directory 站点和服务
Active Directory 用户和计算机
删除过期的计算机对象
要删除过期的计算机对象,请执行以下操作:
单击“开始”,指向“管理工具”,右键单击“Active Directory 用户和计算机”,然后单击“以管理员身份运行”.。
在“视图”菜单上,确保选中“用户、联系人、组和计算机作为容器”,并且选中“高级功能”。
浏览至特定计算机。检查此计算机下是否存在消息队列对象。
如果该特定计算机上存在消息队列对象,而未安装具有 Active Directory 集成的“消息队列”,则该对象为过期对象。删除特定消息队列 Active Directory 对象,然后重新启动 MSMQ 服务,或者如果必要,请重新启动计算机。
有关更多信息,请参阅事件 ID 2116 ( http://technet.microsoft.com/zh-cn/library/dd337481(WS.10).aspx)
Target | Microsoft.MSMQ.10.0.Servers | ||
Category | AvailabilityHealth | ||
Enabled | False | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Remotable | True | ||
Alert Message |
| ||
Event Log | Application |
ID | Module Type | TypeId | RunAs |
---|---|---|---|
DS | DataSource | Microsoft.Windows.EventProvider | Default |
GenerateAlert | WriteAction | System.Health.GenerateAlert | Default |
<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>