SQL Server 2014 Service Broker 未激活从队列接收消息的过程

SQL Server 2014 Service Broker does not activate the procedure that receives messages from the queue

情况与 and to SQL Service Broker -- one central SQL and more satelite SQL... beginner wants to understand details密切相关。

从 SQL Server 2008 R2 Standard Ed 迁移后。到 SQL Server 2014 Standard Ed.,相同的代码不起作用。防火墙设置为允许通信。

sys.transmission_queue(在发送方和接收方服务器上)保持为空,GenericQueue(我的队列标识符)接收消息。但是,附加程序(到接收 SQL 服务器):

ALTER QUEUE [GenericQueue]
    WITH ACTIVATION (
    STATUS = ON,
    MAX_QUEUE_READERS = 1,
    PROCEDURE_NAME = [usp_CentralActivation],
    EXECUTE AS OWNER);

未激活。我已经把日志消息放在里面有确凿的证据——程序没有被调用。

我没有观察到任何错误消息或指示 -- 或者我不知道到哪里寻找指示。我怎样才能找到问题所在?我应该post这里有什么信息可以帮助找到原因?

安装服务代理的代码是从模板生成的,除了机器标识(IP 地址作为字符串)之外,完全相同的代码在 SQL Server 2008 R2 上运行良好。

会不会是EXECUTE AS OWNER的原因? OWNER是谁?

黑暗中的一枪。尝试 运行 这个:

EXECUTE AS USER = 'dbo';

如果失败,则数据库所有者 SID 在本地无效(在还原或文件复制后经常发生)。解决方案很简单:

ALTER AUTHORIZATION ON DATABASE::<dbname> TO [sa];

如果仍有问题,请查看 Understanding Queue Monitors。查看 sys.dm_broker_queue_monitors 并看到 1) 队列存在和 2) 状态为 RECEIVES_OCCURING