【问题标题】:MSMQ cannot delete or purge a queueMSMQ 无法删除或清除队列
【发布时间】:2010-12-06 08:57:09
【问题描述】:

我对 MSMQ 很陌生。 我们有一个使用 MSMQ 的关键系统,由于资源不足而无法启动。看来 MSMQ 已满负荷。 我正在尝试清除消息(甚至删除不必要的队列),但在清除时收到以下错误:

无法从队列中删除所有消息。 错误:对消息队列系统的访问被拒绝。

我有哪些选择?有没有办法在服务关闭时删除队列?

【问题讨论】:

  • 好的,似乎个别队列的权限发生了某种变化。还在想办法。

标签: msmq


【解决方案1】:

获取 Queue Explorer 的副本 - 这是一个商业应用程序,但试用版功能齐全,在调试 MSMQ 时值得一试http://www.cogin.com/mq/

如果你没有权限,那么你就没有权限!你是盒子管理员吗?如果您转到计算机管理并右键单击您的一个私有队列并选择属性,您可以访问安全选项卡并在那里编辑/查看权限吗?

【讨论】:

  • 我正在使用队列资源管理器。我不相信这是帐户权限,我过去能够添加/删除/清除队列。这似乎与队列太满有关。
【解决方案2】:

如果您在机器上打开计算机管理,请展开服务和应用程序节点(2008 年的功能)并右键单击消息队列服务。

右键单击“属性”选项并将其打开到“常规”选项卡。

您可以指定消息的存储限制——您可能已经达到消息存储的上限。如果您暂时增加此值,它可能会允许您返回消息传递系统,以便清除这些队列并恢复操作。

如果做不到这一点,如果您可以处理消息丢失的问题(如果您尝试清除,我认为没问题),也许可以删除队列并重新创建它。

【讨论】:

  • 是的,在提高服务配额后,我能够访问队列。虽然似乎存在次要问题,即我使用的帐户也失去了权限,但尝试读取队列的服务拥有权限,并且可以在提高配额后这样做。顺便说一句,这是在 MSMQ 2.0 上。
【解决方案3】:

有一个更简单的方法:

  • 在机器上打开计算机管理,
  • 扩展服务和应用程序节点(2008 年的功能),
  • 扩展消息队列服务,
  • 展开私人队列文件夹,
  • 扩展您正在使用的私有队列,
  • 右键单击队列消息文件夹并
  • 点击清除选项。

【讨论】:

    【解决方案4】:

    我认为存在版权问题。

    您无法授予权限,然后执行以下步骤以强制删除队列。

    1. 停止关注服务
    Message Queuing Triggers,
    Net.Msmq Listener Adapter
    Message Queuing.
    
    1. 转到 C:\Windows\System32\msmq\storage\lqs

    2. 现在在记事本或记事本++中打开文件

      QueueName=\private$\YourQueueName查看队列名称

    3. 删除文件之前backup the file。现在delete that file

    4. 不要删除没有您的队列名称的其他文件。

    5. 风险自负。

    6. 现在开始关注服务

    Message Queuing Triggers,
    Net.Msmq Listener Adapter
    Message Queuing.
    

    这个技巧对我有用...

    【讨论】:

    • 在发现我有一个问题,其中一个应用程序创建了 3 个私有队列,但我无法访问它们,即使我的帐户在本地管理员组中,我尝试了上述建议的解决方案,但是稍微不一样。我没有备份和删除文件,而是通过添加“.save”扩展名来重命名它们。重新启动所有 MSMQ 服务后,队列在计算机管理中被列为丢失或无法访问。我关闭了 MSMQ 服务,将文件移出目录,重新启动了 MSMQ 服务,现在队列确实消失了。
    猜你喜欢
    • 2016-08-10
    • 2011-06-16
    • 2017-08-15
    • 2010-11-28
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多