本地计算机是一个原属于域的消息队列路由服务器,现在以工作组模式运行。其他消息队列客户端仍将此计算机看作路由服务器,并将尝试通过此计算机路由消息
过期的计算机对象可能会导致 MSMQ 服务无法正常运行。删除过期的计算机对象可能会解决此问题。但是,删除 Active Directory 域服务 (AD DS) 中的计算机对象会导致客户端计算机出现问题。在删除计算机对象之前,请先确保不会影响客户端计算机上运行的服务。在这种情况下,删除消息队列 Active Directory 对象将删除此计算机上的公用队列。
此错误可能由下列情况之一引起:
过期的计算机对象
“目录服务集成”功能中的配置错误。
过期的计算机对象
要执行这些过程,您必须拥有 Administrators 成员身份,或者您必须被委派了适当的权限。
要删除过期的计算机对象,请执行以下操作:
单击“开始”,指向“管理工具”,右键单击“Active Directory 用户和计算机”,然后单击“以管理员身份运行”。
在“视图”菜单上,确保选中“用户、联系人、组和计算机作为容器”,并且选中“高级功能”。
浏览至特定计算机。确定此计算机下是否存在消息队列对象。
如果该特定计算机上存在消息队列对象,而未安装具有 Active Directory 集成的消息队列,则该对象为过期对象。删除特定消息队列 Active Directory 对象,然后重新启动 MSMQ 服务,或者如果必要,请重新启动计算机。
“目录服务集成”功能中的配置错误。
您可以通过执行以下操作来确认是否存在“目录服务集成”功能:
验证注册表项设置
确认计算机已加入正确的域
验证 Active Directory 操作
要执行这些过程,您必须拥有 Administrators 成员身份,或者您必须被委派了适当的权限。
警告:注册表编辑不当可能会严重损坏您的系统。更改注册表之前,您应备份任何有价值的数据。
验证注册表项设置
要验证注册表项设置,请执行以下操作:
打开注册表编辑器。要打开注册表编辑器,请单击“开始”。在搜索框中,键入“regedit”,然后按 ENTER。
在注册表编辑器中,依次展开“HKEY_LOCAL_MACHINE”、“SOFTWARE”、“Microsoft”、“MSMQ”,然后单击“Setup”。
在详细信息窗格中,双击“msmq_ADIntegrated”。
确认已将“数值数据”设置为“1”。
在“MSMQ”, 下,展开“Parameters”。
在详细信息窗格中,双击“Workgroup”。
确认未将“数值数据”设置为“1”。
确认计算机已加入正确的域
要确认计算机已加入正确的域,请执行以下操作:
打开服务器管理器。若要打开服务器管理器,请单击“开始”,指向“管理工具”,然后单击“服务器管理器”。
请确认“计算机信息”中所列的是正确的域。
验证 Active Directory 操作
通过确认消息队列中已启用“公共队列”功能,可以确认 Active Directory 正常运行。
要确认已启用“公共队列”功能,请执行以下操作:
打开“计算机管理”管理单元。要打开“计算机管理”,请单击“开始”。在搜索框中,键入 compmgmt.msc,然后按 ENTER。
导航至“MSMQ”。
如果存在“公用队列”文件夹,可以右键单击该文件夹,则具有 Active Directory 集成的消息队列在域模式下正常运行。
有关详细的确认消息,请运行使用所需 Active Directory 功能的测试应用程序。
有关详细信息,请参阅事件 ID 2169 ( http://technet.microsoft.com/en-us/library/dd337420(WS.10).aspx)
Target | Microsoft.MSMQ.6.3.Servers | ||
Category | ConfigurationHealth | ||
Enabled | False | ||
Event_ID | 2169 | ||
Event Source | $Target/Property[Type="Microsoft.MSMQ.6.3.ServerRole"]/ServiceName$ | ||
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.6.3.Rule.Alert.Event2169" Enabled="false" Target="Microsoft.MSMQ.6.3.Servers" ConfirmDelivery="true" Remotable="true" Priority="Normal" DiscardLevel="100">
<Category>ConfigurationHealth</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>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>$Target/Property[Type="Microsoft.MSMQ.6.3.ServerRole"]/ServiceName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>2169</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.6.3.Rule.Alert.Event2169.AlertName"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>