数据库重启后SQL Server代理禁用

时间:2014-06-24 14:02:50

标签: sql sql-server service-broker

我是SQL Service Broker的新手,所以请原谅我的无知。

我们有一个SQL Service代理需要在数据库重新启动后再次启用。如何在sql服务重启后自动启用?

此外,我们能够在代理被禁用时发送消息,并且不会抛出SQL错误。我们可以搜索队列,但它没有任何内容(两个队列都没有 - 见下文)。

启用代理后,所有消息都会显示在队列中。这是正常行为还是一些错误配置。

请参阅下文,了解服务代理的配置。

谢谢,

格雷格

ALTER DATABASE our_database SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE



CREATE MESSAGE TYPE IncomingFileMessage
VALIDATION = NONE;


CREATE CONTRACT IncomingMessageContract
(IncomingFileMessage SENT BY ANY);

CREATE QUEUE ReceivingQueue

CREATE QUEUE IncomingMessageQueue


CREATE SERVICE ReceivingMessageService
ON QUEUE ReceivingQueue (IncomingMessageContract);

CREATE SERVICE IncomingMessageService
ON QUEUE IncomingMessageQueue (IncomingMessageContract);

1 个答案:

答案 0 :(得分:0)

在服务启动后,您无需执行任何操作来重新启用代理。启用后,它将保持启用状态,直到显式禁用或恢复数据库为止。事实上,在您创建数据库时,数据库很可能已经启用。

关于代理被禁用时发送的消息的位置:查看sys.transmission_queue。存在传递问题时存储已发送的消息(在这种情况下,代理被禁用)是正常行为。

相关问题