我想用COM+的MTS管理管理数据库的事务,数据库是Oracle, 使用OLEDB连接,出现如下错误:
System.Data.OleDb.OleDbException: 没有可用的错误信息: XACT_E_TMNOTAVAILABLE(0x80
04D01B)。
为什么呢?怎么解决?以下为代码:注释掉的部分为连接SQLServer,运行正确,就是连接Oracle不行!using System;
using System.EnterpriseServices;namespace TestMTS
{ [Transaction(TransactionOption.Required)]
public class Class1:System.EnterpriseServices.ServicedComponent
{
public Class1()
{
}
[AutoComplete]
public void doTest()
{
try
{ System.Data.OleDb.OleDbConnection connOrcl = new System.Data.OleDb.OleDbConnection("Provider=MSDAORA; User Id = dbo; Password = xxx; Data Source = XXX");
connOrcl.Open();
string sql1 = "insert into tb_airlinetype values(7,'test7','test7',0)";
System.Data.OleDb.OleDbCommand commo = new  System.Data.OleDb.OleDbCommand(sql1,connOrcl);
commo.ExecuteNonQuery();
connOrcl.Close(); // Console.Write("doTest()");
// string connStr = "user=sa;password=xxx;database=northwind;server=172.20.128.163";
//
// System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(connStr);
// conn.Open();
// string sql = "insert into categories values(11,'test','test',null)";
// System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand(sql,conn);
// comm.ExecuteNonQuery();
// comm.ExecuteNonQuery();
// conn.Close();
}
catch(Exception e)
{
//ContextUtil.SetAbort();
throw e;
}
}
}
}

解决方案 »

  1.   

    另外SQLServer是本机的,而Oracle是远程的,是不时跟这个也有关系?
      

  2.   

    楼主,你有没有安装Oracle Client?
      

  3.   

    这肯定是装了的阿,Oracle10g的客户端
      

  4.   

    楼主用OracleConnection试试,
    连接字符串用这个:"Data Source=MyOracleDB;User Id=username;Password=passwd;Integrated Security=no;"
      

  5.   

    我用了OracleConnection,但是老是出现无法加载 DLL (OraOps10.dll)的错误,根本连不上。这个问题在我的另一个帖子问了,如果谁知道,就顺道告知在下一二
    http://community.csdn.net/Expert/topic/4219/4219146.xml?temp=.6879694
      

  6.   

    试试将Oracle的目录安全性调一下~
      

  7.   

    把oracle客户端安装目录的文件安全调整为everyone完全控制,然后调整注册表中oracle的权限,就可以了