Loading... 今天发现消息队列里插入了一个错误的消息导致堵塞。里面堆积了7000多条无法往下走。  查看日志发现是里面的第一条消息语句错误,数据库无法插入自动重试造成了死循环。  windows这奇葩的mssq管理器居然没有删除单个的功能,如果清除就必须全部清除。还好百度发现可以用powershell脚本。 具体脚本 ```powershell [System.Reflection.Assembly]::LoadWithPartialName("System.Messaging") $queuePath = "FormatName:DIRECT=OS:YourMachineName\private$\YourQueueName" $queue = New-Object System.Messaging.MessageQueue $queuePath $poisonMessageId = "YourQueueId" $queue.ReceiveById($poisonMessageId) ``` 在C盘下创建一个DeleteMessage.ps1文件,粘贴入这个代码。 替换 YourMachineName 为目标机器的名称。 替换 YourQueueName 为想要操作的队列的名称。 替换 YourQueueId 为需要操作的队列的ID。 然后管理员身份打开powershell,切换目录到C盘根目录运行脚本文件 ```powershell Set-Location C:\ ./DeleteMessage.ps1 ``` 运行完成后再就可以看到这个消息被删除了,其他的也开始陆续运行。 最后修改:2023 年 08 月 09 日 © 允许规范转载 打赏 赞赏作者 如果觉得我的文章对你有用,请随意赞赏