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
情况与
从 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