如何从崩溃的机器中恢复消息队列,以便可以在新机器上恢复事务消息?
答案1
停止源计算机和目标计算机上的 MSMQ 服务:
网络停止 MSMQ
删除目标计算机上的以下文件夹并替换为源计算机上相应的文件夹内容:
目录:\Windows\System32\msmq
授予对目标 MSMQ 服务上复制文件夹的访问权限:
icacls.exe “C:\Windows\System32\msmq”/grant “NT SERVICE\MSMQ”:(F)
配置 MSMQ 以忽略检查点文件:
浏览到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters,然后单击“Parameters”。在“编辑”菜单上,指向“新建”,然后单击“DWORD(32 位)值”。在“名称”字段中,输入“LogDataCreated”,然后确保该值设置为 0。
在以下位置打开队列属性。文件是文本,可以用记事本打开。
C:\Windows\System32\msmq\storage\lqs
将“安全”字段更改为与工作队列中的字段匹配。下面给出了一个示例:
安全=0100078...等等
在目标计算机上重新启动 MSMQ 服务:
网络启动 MSMQ
故障排除:
- 无法写入目标文件:导航目标子文件夹,以便 Explorer 提示允许访问。
- 由于检查点文件已被删除,一些消息可能会重复。
- 如果可以查看消息列表但不能查看消息内容本身,则必须在队列属性中更改“安全”字段。
参考:
解释 Microsoft 消息队列服务器和 Microsoft 消息队列中的存储目录中的文件名
http://technet.microsoft.com/en-us/library/cc733512.aspx
http://blog.aggregatedintelligence.com/2012/03/msmqsecurity-descriptor-cannot-be-set.html