MSMQ 无法删除或清除队列
Posted
技术标签:
【中文标题】MSMQ 无法删除或清除队列【英文标题】:MSMQ cannot delete or purge a queue 【发布时间】:2010-12-06 08:57:09 【问题描述】:我对 MSMQ 很陌生。 我们有一个使用 MSMQ 的关键系统,由于资源不足而无法启动。看来 MSMQ 已满负荷。 我正在尝试清除消息(甚至删除不必要的队列),但在清除时收到以下错误:
无法从队列中删除所有消息。 错误:对消息队列系统的访问被拒绝。
我有哪些选择?有没有办法在服务关闭时删除队列?
【问题讨论】:
好的,似乎个别队列的权限发生了某种变化。还在想办法。 【参考方案1】:获取 Queue Explorer 的副本 - 这是一个商业应用程序,但试用版功能齐全,在调试 MSMQ 时值得一试http://www.cogin.com/mq/
如果你没有权限,那么你就没有权限!你是盒子管理员吗?如果您转到计算机管理并右键单击您的一个私有队列并选择属性,您可以访问安全选项卡并在那里编辑/查看权限吗?
【讨论】:
我正在使用队列资源管理器。我不相信这是帐户权限,我过去能够添加/删除/清除队列。这似乎与队列太满有关。【参考方案2】:如果您在机器上打开计算机管理,请展开服务和应用程序节点(2008 年的功能)并右键单击消息队列服务。
右键单击“属性”选项并将其打开到“常规”选项卡。
您可以指定消息的存储限制——您可能已经达到消息存储的上限。如果您暂时增加此值,它可能会允许您返回消息传递系统,以便清除这些队列并恢复操作。
如果做不到这一点,如果您可以处理消息丢失的问题(如果您尝试清除,我认为没问题),也许可以删除队列并重新创建它。
【讨论】:
是的,在提高服务配额后,我能够访问队列。虽然似乎存在次要问题,即我使用的帐户也失去了权限,但尝试读取队列的服务拥有权限,并且可以在提高配额后这样做。顺便说一句,这是在 MSMQ 2.0 上。【参考方案3】:有一个更简单的方法:
在机器上打开计算机管理, 扩展服务和应用程序节点(2008 年的功能), 扩展消息队列服务, 展开私人队列文件夹, 扩展您正在使用的私有队列, 右键单击队列消息文件夹并 点击清除选项。【讨论】:
【参考方案4】:我认为存在版权问题。
您无法授予权限,然后执行以下步骤以强制删除队列。
-
停止关注服务
Message Queuing Triggers, Net.Msmq Listener Adapter Message Queuing.
转到 C:\Windows\System32\msmq\storage\lqs
现在在记事本或记事本++中打开文件
在QueueName=\private$\YourQueueName
查看队列名称
删除文件之前backup the file
。现在delete that file
。
不要删除没有您的队列名称的其他文件。
风险自负。
现在开始关注服务
Message Queuing Triggers, Net.Msmq Listener Adapter Message Queuing.
这个技巧对我有用...
【讨论】:
在发现我有一个问题,其中一个应用程序创建了 3 个私有队列,但我无法访问它们,即使我的帐户在本地管理员组中,我尝试了上述建议的解决方案,但是稍微不一样。我没有备份和删除文件,而是通过添加“.save”扩展名来重命名它们。重新启动所有 MSMQ 服务后,队列在计算机管理中被列为丢失或无法访问。我关闭了 MSMQ 服务,将文件移出目录,重新启动了 MSMQ 服务,现在队列确实消失了。以上是关于MSMQ 无法删除或清除队列的主要内容,如果未能解决你的问题,请参考以下文章