我一直在尝试将 TransactionScope 与 DB2 数据库一起使用(使用 DB2 .Net 提供程序v 9.0.0.2和c#2.0)应该根据IBM支持。
我已经尝试过在IBM论坛上找到的所有建议(例如here)无效。
我在我的XP Sp2机器上启用了XA事务,也尝试从Win 2003 Server机器上运行,但我一直得到臭名昭着的错误:
ERROR [58005] [IBM][DB2/NT] SQL0998N Error occurred during
事务或启发式处理。 原因代码=“16”。子码= “2-80004005”。 SQLSTATE = 58005
Windows事件日志说:
The XA Transaction Manager attempted to load the XA resource
经理DLL。对LOADLIBRARY的调用 用于XA资源管理器DLL 失败: DLL = C:\ APPS \ IBM \ DB2v95fp2 \ SQLLIB \ BIN \ DB2APP.DLL 文件= d:\ comxp_sp2 \ COM \ com1x \ DTC \ DTC \ XATM的\ src \ xarmconn.cpp 行= 2467。
此外,授予NETWORK SERVICE用户对文件夹和dll的完全权限。
这是MSDTC启动消息
MS DTC从以下开始 设置:
安全配置(OFF = 0和 ON = 1): 网络交易管理= 0, 网络客户端= 0, 使用本机MSDTC协议的入站分布式事务= 0, 使用本机MSDTC的出站分布式事务 协议= 0, 交易互联网协议(TIP)= 0, XA Transactions = 1
非常感谢任何帮助!
谢谢, 林
答案 0 :(得分:5)
我设法在TransactionScope中使用了蹩脚的旧IBM DB2 v7 ODBC驱动程序。它要求:
我不确定这是否与您的特定情况相关。 IBM documentation显示原因码16,子码2显示为“MSDTC无法注册DB2连接”。 MSDTC找到DB2 dll似乎存在一些问题 - 也许检查上面引用的注册表项?
答案 1 :(得分:2)
我通过激活MS DTC解决了这个问题,如下图所示:
重新启动计算机,然后重试。确保您拥有最新的IBM驱动程序。我使用10.1 Fix Pack 1和Informix 11.50进行了测试。