【问题标题】:SQL Server Service Broker POISON_MESSAGE_HANDLING(STATUS = ON)SQL Server 服务代理 POISON_MESSAGE_HANDLING(STATUS = ON)
【发布时间】:2014-07-23 06:49:13
【问题描述】:

我们正在托管我们的一个解决方案,该解决方案最初是在 SQL Server 2008 R2 上构建的,并且该实例托管在 SQL Server 2008 实例(不是 R2)上。数据库创建良好,但由于某种原因,服务代理队列的创建是:

POISON_MESSAGE_HANDLING(STATUS = OFF)

我尝试将其设置为开启,但没有成功,我们总是这样声明队列:

CREATE QUEUE QueueName WITH STATUS=ON, ACTIVATION 
(STATUS = ON, MAX_QUEUE_READERS = 1, 
PROCEDURE_NAME = QueueProcedureName,   EXECUTE AS OWNER); 

有没有办法使用 R2 的默认值创建队列?

编辑 - 更多信息:

这是没有意义的错误消息,因为在 2008 R2 上运行良好。 去 ALTER QUEUE [Store].[UpdateStoredPublishingSegmentUsersSendQueue] WITH POISON_MESSAGE_HANDLING(STATUS = ON);

消息 102,级别 15,状态 1,行 2 'POISON_MESSAGE_HANDLING' 附近的语法不正确。

【问题讨论】:

  • I have tried setting this to on but with no luck 定义“不走运”。有任何错误信息吗?

标签: sql-server sql-server-2008 service-broker


【解决方案1】:

这是 sql server 版本的问题。低于 2008 R2 的版本不支持 POISON-MESSAGE_HANDLING。希望这会有所帮助!

【讨论】:

  • 我删除了该部分并创建了队列。 CREATE QUEUE [Core].[TestSendQueue] WITH STATUS = ON , RETENTION = OFF ON [PRIMARY] 我认为这个问题更复杂,因为 Sql 2008 不支持它。
【解决方案2】:

免责声明:我没有尝试过以下命令,因为我在 2005 上运行,不支持 POISON_MESSAGE_HANDLING 选项。

你在执行CREATE后尝试过ALTER QUEUE命令吗?

ALTER QUEUE <queue name> WITH 
    POISON_MESSAGE_HANDLING ( STATUS = ON )

或者尝试像这样修改您的 CREATE 命令:

CREATE QUEUE <queue name> WITH 
    STATUS=ON, 
    ACTIVATION (
        STATUS = ON, 
        MAX_QUEUE_READERS = 1, 
        PROCEDURE_NAME = <activated sproc name>,
        EXECUTE AS OWNER
    ),
    POISON_MESSAGE_HANDLING ( STATUS = ON ); 

【讨论】:

    猜你喜欢
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2019-11-06
    相关资源
    最近更新 更多