TransactionScope不适用于DB2提供程序

3 db2 drivers transactionscope

我一直在尝试将TransactionScopeDB2数据库(使用DB2 .Net提供者v 9.0.0.2和c#2.0)一起使用,根据IBM应该支持它.

我已经尝试过在IBM论坛上找到的所有建议(比如这里)无济于事.

我已经在我的XP Sp2机器上启用了XA事务,也尝试从Win 2003 Server机器,但我一直得到臭名昭着的错误:

ERROR [58005] [IBM][DB2/NT] SQL0998N  Error occurred during
Run Code Online (Sandbox Code Playgroud)

事务或启发式处理.原因代码="16".子代码="2-80004005".SQLSTATE = 58005

Windows事件日志说:

The XA Transaction Manager attempted to load the XA resource
Run Code Online (Sandbox Code Playgroud)

经理DLL.对XA资源管理器DLL的LOADLIBRARY调用失败:DLL = C:\ APPS\IBM\DB2v95fp2\SQLLIB\BIN\DB2APP.DLL文件= d:\ comxp_sp2\com\com1x\dtc\dtc\xatm\src\xarmconn .cpp Line = 2467.

此外,授予NETWORK SERVICE用户对文件夹和dll的完全权限.

这是MSDTC启动消息

MS DTC以以下设置开始:

安全配置(OFF = 0和ON = 1):网络管理事务= 0,网络客户端= 0,使用本机MSDTC协议的入站分布式事务= 0,使用本机MSDTC协议的出站分布式事务= 0,事务Internet协议(TIP) = 0,XA Transactions = 1

任何帮助将非常感激!

谢谢,弗罗林

Sam*_*Sam 5

我设法在TransactionScope中使用了蹩脚的旧IBM DB2 v7 ODBC驱动程序.它要求:

  • 在MSDTC属性中启用XA事务
  • 在注册表项HKLM\SOFTWARE\Microsoft\MSDTC\XADLL下输入的值,名称为"DB2CLI.DLL",值为"C:\ PROGRA~1\IBM\SQLLIB\BIN\DB2CLI.DLL"(以8.3格式显示的dll路径) - v9使用DB2APP.DLL)
  • 重启
  • 在处理TransactionScope之前不关闭连接.回想起来似乎很明显.:)

我不确定这是否与您的特定情况相关.在IBM文档显示的原因代码16,子码2为"MSDTC是无法注册DB2连接".MSDTC找到DB2 dll似乎存在一些问题 - 也许检查上面引用的注册表项?