管理会话优先级

使用 Service Broker 会话优先级,可以指定优先处理哪些会话,以便这些会话的消息不会被来自较不重要的会话的大量消息所阻塞。

启用会话优先级

对 RECEIVE 语句而言,会话优先级总是处于活动状态。HONOR_BROKER_PRIORITY 数据库选项必须为 ON,才能使会话优先级对 SEND 语句处于活动状态。默认情况下,所有数据库的此选项均为 OFF。

管理员可以在数据库中使用下面的语句对 SEND 语句启用会话优先级:

ALTER DATABASE MyDatabase SET HONOR_BROKER_PRIORITY ON;

管理员可以使用下面的语句对 SEND 语句关闭会话优先级:

ALTER DATABASE MyDatabase SET HONOR_BROKER_PRIORITY OFF;

指定会话优先级

会话优先级是使用 CREATE BROKER PRIORITY、ALTER BROKER PRIORITY 和 DROP BROKER PRIORITY 语句指定的。有关详细信息,请参阅会话优先级

查询会话优先级

会话优先级存储在 sys.conversation_priorities 系统视图中。下面的语句列出了当前数据库中的所有会话优先级:

SELECT scp.name AS priority_name,
       ssc.name AS contract_name,
       ssvc.name AS local_service_name,
       scp.remote_service_name,
       scp.priority AS priority_level
FROM sys.conversation_priorities AS scp
    INNER JOIN sys.service_contracts AS ssc
       ON scp.service_contract_id = ssc.service_contract_id
    INNER JOIN sys.services AS ssvc
       ON scp.local_service_id = ssvc.service_id
ORDER BY contract_name, local_service_name,
         remote_service_name;