我在vc6.0环境下用ado的方式连接oracle,在程序里连接时就会报  ORA-12154  错误,网上说法好像是不能解析服务名,用sqlplus测试用户名和服务名均正常,连接字符串如下:
Provider=OraOLEDB.Oracle.1;Data Source=itn152;User ID=itn_zc;Password=itn_zc;其中用 sqlplus itn_zc/itn_zc@itn152能正常连接到数据库,但程序里就会报错,请问哪位大侠指导下是怎么回事啊

解决方案 »

  1.   

    sqlplus itn_zc/itn_zc@itn152中的itn152可以是任何的字符传,由tnsnames.ora中的命名决定。而Provider=OraOLEDB.Oracle.1;Data Source=itn152;User ID=itn_zc;Password=itn_zc; 中的Data Source由数据库的SELECT instance_name FROM v$instance的值决定。明白了吗?
      

  2.   

    查询出实际的INSTANCE_NAME 即可。
      

  3.   

    楼上两位的意思是要用服务器的实例名?我刚才试过了,SELECT instance_name FROM v$instance  结果是 SDH  ,连接字符串改为  Provider=OraOLEDB.Oracle.1;Data Source=sdh;User ID=itn_zc;Password=itn_zc;  也不行啊
      

  4.   

    我的做法:(VB下的)
        strds = Strings.Chr(34) & "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" & strAll & ")(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=JWGL)))" & Chr(34)
        strConn = "Provider=MSDAORA.1;Password=mypas;User ID=myID;Data Source=" & strds & ";Persist Security Info=True"这样的好处是不需要配置网络服务名.只要安装了客户端即可.
      

  5.   

    如果 sqlplus itn_zc/itn_zc@itn152 能正常连接到数据库
    Provider=OraOLEDB.Oracle.1;Data Source=itn152;User ID=itn_zc;Password=itn_zc 应该没有问题的。
    做一下 tnspingtnsping itn152
      

  6.   

    多谢各位的回答,问题已解决,搞了半天是路径名的问题,貌似是Oracle的一个bug