在XXXX项目(名字不便书写)中用到了Sql Adapter的数据适配器,因为在开发环境时Biztalk服务器是运行在64位操作系统上,而Host实例是运行在32Bit Only模式下的,开发测试一切正常,数据读取和写入也没问题;但是当把导出的msi文件在安装了64位操作系统,并且Biztalk主机配置为64位的测试环境下导入时,第一个测试流程结果就让人大跌眼镜,返回了一个错误事件,错误ID 5754:
事件类型: 错误
事件来源: BizTalk Server 2006
事件种类: BizTalk Server 2006
事件 ID: 5754
日期: 2009-04-13
事件: 17:51:35
用户: N/A
计算机: XXXXX-XXXXX
描述:
发送到发送端口“ExecInfoXmlToDB”(URI 为“SQL://./XXXDB/”)上适配器“BiztalkMessagingEngine”的消息已挂起。
错误详细信息: 64 位主机实例不支持此发送端口的发送适配器。请确保该发送适配器与仅 32 位处理程序相关联。
消息 ID: {7AB79F0A-DAAD-4F03-8D27-FEE220ED253F}
实例 ID: {639A8435-2C96-47F3-836C-0B52BDF6F417}
有关更多信息,请参阅在 http://go.microsoft.com/fwlink/events.asp 的帮助和支持中心。
于是开始怀疑:
是不是Biztalk应用程序没有发布成64位程序?可是在部署时选择的是".NET"的活动解决方案平台啊,换句话说是支持32位和64位环境的...
是不是SQL 2005安装的或补丁包有问题?看了下已安装程序,也都没问题,跟开发环境一样的配置
............
难道是Biztalk 64位主机实例的问题???当我逐渐排除自我原因后,终于还是把责任放到了ms的一边:(
于是GOOGLE了一把,终于在国外的开发论坛里看到了类似的问题,一个链接把我推向了无奈的深渊:
http://msdn.microsoft.com/en-us/library/aa560166.aspx
***************************************************************
英文官方文档给的说明如下:
By default, all adapters can run in 32-bit mode on 32-bit Windows and on WOW64 on 64-bit Windows. The following adapters can run in native 64-bit mode (in either IIS or BTSNTSVC as the host process):
- HTTP
- SOAP
- File
- SMTP
- MSMQ
- MQSeries
- WCF
Note |
---|
The MQSeries adapter is supported in both 32-bit and 64-bit processes. The adapter has a MQSeries Agent that runs on IBM WebSphere MQ Server on Windows. With MQ Fix Pack 6.0.2.1 the agent is supported as a 32-bit process running under WOW64. |
Note |
---|
Running the WSE adapter, FTP adapter, SQL adapter, POP3 adapter, and MIME Decoder on 64-bit host instances is not supported. |
*************************************************************
本地中文文档说明:
哪些适配器能够运行在 64 位模式下?
默认情况下,所有适配器都可以在 32 位 Windows 上运行在 32 位模式下,在 64 位 Windows 上则运行在 WOW64 下。以下适配器可以运行在本机 64 位模式下(在 IIS 或 BTSNTSVC 作为主机进程的情况下):
HTTP
SOAP
文件
SMTP
MSMQ
MQSeries
注意:
32 位和 64 位进程都支持 MQSeries 适配器。该适配器依赖于 MQSeries 代理的 IBM API,当前 IBM 只在 32 位 Windows 上支持它。
*************************************************************
不支持...这是最新的Biztalk Server 2006 R2的说明(在我开发环境的中文文档中则没有SQL adpater的说明),明确指明了SQL adapter适配器在64位主机实例下是不受欢迎的!于是又向MS打电话询问这个问题又没有Fix包或者dll补丁之类的,答复如下:
所以如果要在64位的机器上运行SQL Adapter,必须将该BizTalk Application运行的host instance所在的host选成32-bit only。同样根据您提供的事件日志,在log中警告的错误信息中,也同样提到了:
“发送到发送端口“ExecInfoXmlToDB”(URI 为“SQL://./TWFDB/”)上适配器“BiztalkMessagingEngine”的消息已挂起。
错误详细信息: 64 位主机实例不支持此发送端口的发送适配器。请确保该发送适配器与仅 32 位处理程序相关联。 ”
所以我们建议您使用32-bit only来设计您的application......
看来也只有接受这样的安排了,于是又新建了主机和32位主机实例,把SQL端口运行主机实例绑定到新建的主机实例上,主应用程序还是绑定的默认的主机实例,也就是64位主机实例。果然不出所料,程序运转正常,而在进程管理器里面看到了久违的BTSNTSvc和...BTSNTSvc64...共存!和谐的解决了问题...
不知道这样的64位+32位运行方式对于Bts的性能影响有多少,整个BizTalk系统还是否能发挥64位的优势,但显然的双进程对于内存和CPU的消耗还是很可观的。
真心的希望开发者和管理者们引以为戒,在搭建项目架构同时要看清真实运行环境对扩展架构的支持度和可实施性,自己也要引以为戒,牢记。
真让我不爽啊,可真让我不爽...颜面尽失不说,心都拔凉了
Biztalk Server 2009...SQL Adapter Event ID 5754 WILL GO ON???