2014-07-23 88 views
0

我们承载了最初构建于SQL Server 2008 R2上的一个解决方案,此实例托管在SQL Server 2008实例(不是R2)上。该数据库中创建的罚款,但由于某些原因,服务代理队列,用创建:SQL Server Service Broker POISON_MESSAGE_HANDLING(STATUS = ON)

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上的正常工作。 GO ALTER QUEUE [Store]。[UpdateStoredPublishingSegmentUsersSendQueue] WITH POISON_MESSAGE_HANDLING(STATUS = ON);

Msg 102,Level 15,State 1,Line 2 'POISON_MESSAGE_HANDLING'附近的语法不正确。

+0

'我试过设置这个,但没有运气'定义'没有运气'。任何错误消息? –

回答

0

免责声明:我没有试过以下命令,因为我在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); 
1

这是与SQL Server的版本的问题。在版本低于2008 R2的版本中不支持POISON-MESSAGE_HANDLING。希望这可以帮助!

+0

我删除了该部分并创建了队列。 CREATE QUEUE [Core]。[TestSendQueue] WITH STATUS = ON,RETENTION = OFF ON [PRIMARY] 我认为这个问题更为复杂,因为它在Sql 2008中不受支持。 –

相关问题