由于消息存储问题导致消息队列服务无法启动。
使用命令行备份和还原消息队列消息
在命令提示符处,键入以下内容,然后按 ENTER:
mqbkup {-bfolderpath | -rfolderpath| -?} [-y] [-cmsmq_resource_name]
值 | 说明 |
-bfolderpath | 将文件备份到指定文件夹 |
-rfolderpath | 从指定文件夹还原文件 |
-y | 不提示(所有问题均为“是”) |
-cmsmq_resource_name | 在 MSMQ 配置为群集资源时使用,指定群集 MSMQ 资源名称 |
-? | 显示实用程序的帮助 |
消息存储将导致 Message Queuing 服务问题。
在还原消息之前,必须关闭“控制面板”以及所有消息队列应用程序或者打开 HKLM\Software\MSMQ\Parameters 注册表项的注册表项句柄的任何应用程序。此类应用程序通常包含计算机管理控制台(如果加载了消息消息队列管理单元)、MSMQ 触发器服务、消息队列服务以及一些第三方应用程序。
注意:关闭控制面板在 Windows XP 及更高版本上不是问题,因为这些版本的 Windows 不包含 MSMQ 控制面板扩展。 |
其他注意事项
• | Mqbkup 实用工具无法用于备份或还原 Active Directory 域服务中存储的对象。因此,Mqbkup 实用程序无法备份或还原公用队列,因为公用队列是 Active Directory 域服务中的对象。Mqbkup 实用工具会备份或还原所有在本地计算机上存储的、由公用队列引用的消息队列消息,但公用队列本身必须独立于 Mqbkup 实用工具进行备份或还原。 |
• | 此实用工具会备份可恢复的事务性消息,包括传出队列中的消息。其不会备份或还原快速消息。 |
• | 证书和加密密钥信息不使用此实用工具进行备份。 |
• | 执行还原操作后,必须注册新的用户证书。有关如何注册证书的信息,请参阅“其他引用”。 |
• | 此实用工具会停止并重启消息队列服务,这将导致所有快速消息丢失。有关快速消息的详细信息,请参阅“其他引用”。 |
• | 如果 COM+ 应用程序已由绑定到触发器的规则调用,则还原消息可能会失败,出现“访问被拒绝”错误。要解决此问题,请遵循以下步骤: |
• | 在 Windows Vista® 计算机上,从使用本地管理员权限运行的命令提示符处启动 mqbkup。 |
• | 确保所有正在使用 MSMQ API 的用户应用程序和服务都已停止。 |
• | 如果还原消息仍然失败,请等待 10 分钟,然后重试。释放所有对象后,COM+ 应用程序需要 10 分钟时间从内存中卸载。 |
有关详细信息,请参阅备份和还原消息 ( http://technet.microsoft.com/zh-cn/library/cc771016(WS.10).aspx)。
有关详细信息,请参阅注册消息队列的证书 ( http://technet.microsoft.com/zh-cn/library/cc753651(WS.10).aspx)。
有关详细信息,请参阅消息传递方法 ( http://technet.microsoft.com/zh-cn/library/cc771721(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.Event2023" 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>2023</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.Event2023.AlertName"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>