2

我试图让 SQL 通知与 BizTalk 一起工作,但我正在苦苦挣扎。

Receivelocation的绑定如下:

在此处输入图像描述

SQL Server 支持通知,连接字符串正确。

当我启动 Receivelocation 时,它以正确的方式运行一次,但是当我禁用它并再次启动它时,我在事件日志中收到以下错误。

  • 消息引擎无法将 URL 为“mssql://.//Database?InboundId=GetNewMDMChanges”的接收位置“RL.MDM.SQL”添加到适配器“WCF-SQL”。原因:“Microsoft.ServiceModel.Channels.Common.TargetSystemException:通知回调返回错误。Info=Invalid。Source=Statement。Type=Subscribe。

在我在数据库上执行以下命令以启用代理之前,我无法再次启动接收位置。

alter database MDMDEV set enable_broker with rollback immediate;

这里奇怪的是,当我在执行上面的命令之前检查代理是否仍然启用时,我看到代理确实仍然启用。

因此,启用代理的命令正好解决了我的另一个通知问题,而我必须再次执行此操作。

有没有人遇到过这个问题或者可以告诉我我做错了什么?提前致谢。

4

1 回答 1

1

一般来说,关于通知功能,我的建议是不要使用它

对于 SQL Server 和 Oracle,通知功能非常脆弱,将停止接收事件而不会发出警告或错误。发生这种情况时,唯一的恢复方法是禁用/启用接收位置。

基本上,我发现它不够可靠,无法在生产应用程序中使用。

如果您或您的组织拥有该数据库,则轮询 [+ Triggers if needed] 是 100% 可靠的。

本文介绍了一些不同的轮询方案:BizTalk Server:轮询和批量检索的 SQL 模式

于 2017-07-11T15:13:15.033 回答