通过MTS访问Oracle 8i数据库的程序,急死了(300分)

  • 主题发起人 主题发起人 wdq
  • 开始时间 开始时间
W

wdq

Unregistered / Unconfirmed
GUEST, unregistred user!
有谁在NT下做过通过MTS访问Oracle 8i数据库的程序。
我碰到的问题是,做了一个com组件(server),用ado访问后台数据库(oracle 8i),
客户端调用server中的接口函数,如果不把server放入MTS中,我可以顺利访问数据库并
取得返回值,但是我把server放入MTS中以后,单步调试我的程序发现,在server端打开
connection时会出错,在MTS中,我将componant的属性设为requires a transaction。
我用的是nt 4 sp6,客户端和server、数据库都在同一台机器上。oracle装的是8i版本,
没有装client。
这几天老板让我交程序,可我还找不到出错的原因,急死了,哪位仁兄帮忙,必感激
不尽。

为什么不用mts时能访问,而用了mts就不行了
我用的是vc6做的程序,但找不到地方问问题,只能跑到这里来了,虽然不是
delphi方面的,但我希望有高手帮我解决这个问题,这是我最后的希望了。
 
现在的错误是,我将MTS中组件的Transaction属性改为Support Transaction 后程序并不
出错,但将属性改为Requires a Transaction 时,跟踪到服务器组件程序中,当执行
pConn->Open(),函数时,会出现“thead 0x1B has exited with code 0”的错误。
其中pConn 为ADOCONNECTION。
 
你使用Oracle Services还是XA transaction?
如果是后者,你设置Oracle支持XA transaction了么?
如果设置了,还要检查XA DLL,MTS缺省是for Oracle7.3的
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Transaction Server/Local Computer/My Computer
另外,没装Client段是什么意思?是不是缺省肯定有了,不需要装了吧(既然能连接)
 
你使用Oracle Services还是XA transaction?
//我也不知道从什么地方看出来是哪种方式?

如果是后者,你设置Oracle支持XA transaction了么?
//在什么地方设置?
如果设置了,还要检查XA DLL,MTS缺省是for Oracle7.3的
//的确是XA73.DLL,但好像系统中根本就没有这样的文件,XA80.DLL好像也没有
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Transaction Server/Local Computer/My Computer
 
手头没有Oracle,应该是client端里边带的吧?
你既然用oracle,总得有点手册/help之类的?
 
很少有介绍MTS和ORACLE联合使用的资料,有也没有详细介绍实现细节,客户端我也装了,
就是找不到那个文件?
 
http://technet.oracle.com/tech/nt/ora_mts/htdocs/ora_mts_815_wp.htm
http://support.microsoft.com/support/complus/mtsandoracle.asp
试试看吧,别的我也帮不上什么了。
 
不管怎么样谢谢你了,
 
什么时候解决了,通知我一下?
 
If you use Oracle 8 client software, modify the values of the following
registry keys as necessary to make sure they match those specified as follows:

Oracle Windows NT or Windows 9x Windows2000
Client
7.x [HKEY_LOCAL_MACHINE/SOFTWARE [HKEY_LOCAL_MACHINE/SOFTWARE
/Microsoft/TransactionServer Microsoft/MSDTC/MTxOCI]
/Local Computer/My Computer] "OracleXaLib"="xa73.dll"
"OracleXaLib"="xa73.dll" "OracleSqlLib"="SQLLib18.dll"
"OracleSqlLib"="SQLLib18.dll" "OracleOciLib"="ociw32.dll"
"OracleOciLib"="ociw32.dll"
8.0 [HKEY_LOCAL_MACHINE/SOFTWARE [HKEY_LOCAL_MACHINE/SOFTWARE
/Microsoft/Transaction Server /Microsoft/MSDTC/MTxOCI]
/Local Computer/My Computer] "OracleXaLib"="xa80.dll"
"OracleXaLib"="xa80.dll" "OracleSqlLib"="sqllib80.dll"
"OracleSqlLib"="sqllib80.dll" "OracleOciLib"="oci.dll"
"OracleOciLib"="oci.dll"
8.1 [HKEY_LOCAL_MACHINE/SOFTWARE [HKEY_LOCAL_MACHINE/SOFTWARE
/Microsoft/Transaction Server /Microsoft/MSDTC/MTxOCI]
/Local Computer/My Computer] "OracleXaLib"="oraclient8.dll"
"OracleXaLib"="oraclient8.dll" "OracleSqlLib"="orasql8.dll"
"OracleSqlLib"="orasql8.dll" "OracleOciLib"="oci.dll"
"OracleOciLib"="oci.dll"
if you are using Oracle 8.1.6,do
not install "Oracle Services for MTS"
if you are using Microsoft OLEDB/ODBC drivers. Oracle Services for MTS are
not required for COM+/MTS transactional components to work properly with
Oracle Database.

 
就是说,你看了那两篇文章(或者其中一篇),解决了问题?
 
后退
顶部