各位老大,小弟日前写了一个DCOM服务,在这个服务中,用到了以前的一个COM dll,这个com dll包装了ADO的一些功能。我已经用普通的对话框程序测试过这个包含ado的dll。现在我用一个对话框程序,使用同样的数据库连接字串设置来调用dcom服务,由服务再来调用com dll,创建com对象可以成功,设置其中ado对象的连接字串、超时都正确,但在adoobj->connect时报错:0x80004005 未指定错误。请问原因。我的dcom和com dll都是apartment的套间方式。

解决方案 »

  1.   

    我现在在dcom中直接调用ado,open连接的时候仍然报错,不管我用CoInitialize还是CoInitializeEx(NULL, COINIT_MULTITHREADED)都一样。
      

  2.   

    不会的把,我一直都在用这个,挺稳定的,
    你把调用时的各种参数都写死试试看
    另外,你的connect对象有没有初始化?
      

  3.   

    你不可以把dll的功能写到dcom中吗?应该不复杂的
      

  4.   

    有几种情况:
    1。你的连接字串的参数设置不对。连不上数据库。
    2。你的机器与目的数据库的机器如果不是同一台机器。请确保数据库的机器
    上guest账号未关闭或者从你机器上“开始”-》“运行”,输入“\\数据库机器名”,再输入密码。
      

  5.   

    问题解决了,在创建ado对象时使用CLSCTX_INPROC_SERVER就可以了。不过我原来使用的是CLSCTX_SERVER,包含了CLSCTX_INPROC_SERVER,不明白为什么不行。
      

  6.   

    你不是你没有注册成为server?