【问题标题】:SQL Server 2014 Service Broker does not activate the procedure that receives messages from the queueSQL Server 2014 Service Broker 不激活从队列接收消息的过程
【发布时间】:2015-08-05 07:18:41
【问题描述】:

情况与SQL Service Broker - communication scenario - migration from SQL 2008 R2 to SQL 2014SQL 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);

未激活。我已将日志消息放入其中以获得有形的证据——该过程未被调用。

我没有观察到任何错误消息或指示 - 或者我不知道在哪里寻找指示。我怎样才能找到问题所在?我应该在此处发布哪些信息以帮助查找原因?

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

EXECUTE AS OWNER 可能是原因吗? OWNER是谁?

【问题讨论】:

    标签: sql-server sql-server-2014 service-broker


    【解决方案1】:

    在黑暗中拍摄。尝试运行:

    EXECUTE AS USER = 'dbo';
    

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

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

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

    【讨论】:

    • 这确实是在黑暗中非常精确的拍摄。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多