我一直在尝试使用交易范围 with a DB2数据库(使用DB2 .Net提供商 v 9.0.0.2 和 c# 2.0),根据 IBM 的说法,应该支持它们。
我已经尝试了在 IBM 论坛上可以找到的所有建议(例如here http://www.ibm.com/developerworks/forums/thread.jspa?threadID=106298)无济于事。
我在我的 XP Sp2 机器上启用了 XA 事务,也从 Win 2003 Server 机器上尝试过,但我始终遇到臭名昭著的错误:
ERROR [58005] [IBM][DB2/NT] SQL0998N Error occurred during
事务或启发式处理。
原因代码=“16”。子代码 =
“2-80004005”。 SQL状态=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 开始于以下内容
设置:
安全配置(关闭 = 0 且
开 = 1):
交易网络管理 = 0,
网络客户端 = 0,
使用本机 MSDTC 协议的入站分布式事务 = 0,
使用本机 MSDTC 的出站分布式事务
协议 = 0,
交易互联网协议(TIP)= 0,
XA 交易 = 1
任何帮助将非常感激!
谢谢,
弗罗林
我设法让老旧的 IBM DB2 v7 ODBC 驱动程序在 TransactionScope 中工作。它要求:
- 在 MSDTC 属性中启用 XA 事务
- 在注册表项 HKLM\SOFTWARE\Microsoft\MSDTC\XADLL 下输入的值,名称为“DB2CLI.DLL”,值为“C:\PROGRA~1\IBM\SQLLIB\BIN\DB2CLI.DLL”(8.3 格式的 dll 路径) - v9 使用 DB2APP.DLL)
- A reboot
- 在处置 TransactionScope 之前不关闭连接。回想起来,这似乎是显而易见的。 :)
我不确定这是否与您的特定场景相关。这IBM 文档 http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=/com.ibm.db2.luw.messages.sql.doc/doc/msql00998n.html将原因代码 16、子代码 2 显示为“MSDTC 无法注册 DB2 连接”。 MSDTC 查找 DB2 dll 时似乎存在一些问题 - 也许检查上面引用的注册表项?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)