【问题标题】:SQL Service Broker External Activator not launching exeSQL Service Broker External Activator 未启动 exe
【发布时间】:2013-06-10 01:41:02
【问题描述】:

我需要获得 SSB 外部激活才能从 db 触发器启动 exe。借助网络上可用的少量信息,我设法使几乎所有东西都能完美运行。我可以向队列发送消息,并且可以使用持续轮询数据库的 C# 应用程序从队列中读取消息。但我需要外部激活器来实际启动我的 exe。这是为了工作,我被困住了,所以非常感谢任何帮助!

外部激活器日志文件:Here

外部激活器配置文件:Here

队列状态(图片):Here

谢谢!

编辑:SQL 代码:

ALTER DATABASE AdventureWorks2012 SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE;

创建消息类型 [requestMessageType] 验证 = WELL_FORMED_XML

创建消息类型 [responseMessageType] 验证 = WELL_FORMED_XML

创建合同 [smtContract] ( [requestMessageType] 由发起者发送, [responseMessageType] 按目标发送 )

创建队列 InitiatorQueue WITH STATUS = 开启

创建队列目标队列 WITH STATUS = 开启

创建服务 InitiatorService ON QUEUE InitiatorQueue ( [smt合同] )

创建服务目标服务 ON QUEUE 目标队列 ( [smt合同] )

创建队列 ExternalActivatorQueue WITH STATUS = 开启

创建服务 ExternalActivatorService ON QUEUE ExternalActivatorQueue ( [http://schemas.microsoft.com/SQL/Notifications/PostEventNotification] )

创建事件通知 EventNotificationTargetQueue ON QUEUE 目标队列 FOR QUEUE_ACTIVATION TO SERVICE 'ExternalActivatorService', '当前数据库';

创建表 [顺序] ( ID int identity(1000,1) NOT NULL, 金额 MONEY NOT NULL )

-- 触发器将消息添加到 ImportQueue 创建 TRIGGER OnOrderInserted ON [Order] FOR INSERT 作为 开始 开始交易; 声明@ch UNIQUEIDENTIFIER 声明@messageBody NVARCHAR(MAX);

    BEGIN DIALOG CONVERSATION @ch
            FROM SERVICE [InitiatorService]
            TO SERVICE 'TargetService'
            ON CONTRACT [smtContract]
            WITH ENCRYPTION = OFF;

    -- Construct the request message
    SET @messageBody = (SELECT ID, Amount FROM [Order] FOR XML AUTO, ELEMENTS);

    -- Send the message to the TargetService
    ;SEND ON CONVERSATION @ch
    MESSAGE TYPE [requestMessageType] (@messageBody);
COMMIT;

结束 去吧

将数据库::AdventureWorks2012 的授权更改为 [sa];

ALTER QUEUE InitiatorQueue 激活 ( PROCEDURE_NAME = ProcessResponseMessages, 状态 = 开, MAX_QUEUE_READERS = 1, 作为所有者执行 )

【问题讨论】:

  • 对于任何有同样问题的人,结果证明这是一个安全问题,而且不要忘记您需要手动启动 EA windows 服务。 (此外,您提供该服务的凭据将是用于查询 db 的凭据),这是一个艰难的过程,祝您好运!

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


【解决方案1】:

在形成消息并将其发送到队列时必须非常小心,并且必须正确设置 win-service 配置。

在这里查看帖子:No enabled application monitor is on behalf of queue XYZ

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    相关资源
    最近更新 更多