sql broker 为什么自动关闭,一直用到好好的,为什么我刚刚看数据库broker没有启用呢

解决方案 »

  1.   

    Service Broker 最有用的功能之一是激活功能。激活功能使应用程序可以动态地调整自身,以匹配队列中到达的消息量。Service Broker 提供了一些功能,这些功能使在数据库中运行的程序和在数据库外运行的程序都可以利用激活。但是,Service Broker 不要求应用程序必须使用激活。Service Broker 监视队列中的活动,以确定某个应用程序是否在接收所有含有可用消息的会话的消息。当有工作需要由新的队列读取器来执行时,Service Broker 激活功能会启动一个新的队列读取器。Service Broker 监视队列中的活动来确定何时有工作需要由队列读取器来执行。当队列读取器的数量与传入的通信流量相匹配时,队列会定期进入一种状态,即队列或者为空,或者该队列中的所有消息都属于正由另一队列读取器处理的会话。如果队列在一段时间内没有达到此状态,则 Service Broker 会激活应用程序的另一个实例。对于在数据库中运行的程序和在数据库外运行的程序,应用程序使用不同的激活方法。对于在数据库中运行的程序,Service Broker 启动队列所指定的存储过程的另一个副本。对于在数据库外运行的程序,Service Broker 生成一个激活事件。程序监视此事件以确定何时需要另一个队列读取器。Service Broker 不停止通过激活功能启动的程序。激活的应用程序都被编写为如果在特定的时间段内没有消息到达以供接收,则在这段时间过后将自动关闭。以这种方法设计的应用程序使应用程序实例的数量可以随服务的通信流量更改而动态地增大或减小。此外,如果系统关闭或重新启动,则系统重新启动时,应用程序会自动启动以读取队列中的消息。传统的消息传递系统没有此行为,结果在某个给定的时间专用于特定队列的资源经常不是太多就是太少。http://msdn.microsoft.com/zh-cn/library/ms166063.aspx