最近将程序部署到另一台服务器中遇到了棘手的问题
装的是oracle 10g, 并且也装了ODAC1020221-OLEDB连接客户端
监听、 服务都配置好了,使用PL/SQL连接是没问题但是程序连接字符串:Provider=OraOLEDB.Oracle;User ID=admin;Data Source=orcl;Password=admin;
就会提示:无法识别请求的字符串当把Data Source=(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.122.89.83)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = orcl)
    )
  )这样连接就没问题~请遇到类似问题的专家帮忙解决一下~~~

解决方案 »

  1.   

    如果是从一台机器连接另一台机器,首先要安装oracle的客户端程序,这样才有连接驱动。当然被链接的那台及其必须安装了oracle的数据库。然后连接方法是:ODBC 新版本 
    Driver={Microsoft ODBC for Oracle};Server=myServerAddress;Uid=myUsername;Pwd=myPassword; 
    旧版本 
    Driver={Microsoft ODBC Driver for Oracle};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword; 
    OLE DB, OleDbConnection (.NET) 标准连接 
    此连接字符串适用了微软的驱动。 
    Provider=msdaora;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword; 
    受信连接 
    Provider=msdaora;Data Source=MyOracleDB;Persist Security Info=False;Integrated Security=Yes; 
    标准连接 
    由Oracle提供的驱动。 
    Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword; 
    受信连接 
    Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;OSAuthent=1; 
    Oracle.DataAccess.Client.OracleConnection 标准 
    Data Source=TORCL;User Id=myUsername;Password=myPassword; 
    标准安全连接 
    Data Source=TORCL;Integrated Security=SSPI; 
    使用ODP.NET而不使用tnsnames.ora 
    Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword; 
    OracleConnection, Oracle Data Provider, ODP.NET, System.Data.OracleClient.OracleConnection 标准 
    Data Source=MyOracleDB;Integrated Security=yes; 用于8i RC3及以后的版本 指定用户名和密码 
    Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;Integrated Security=no; 用于8i RC3及以后的版本 忽略tnsnames.ora 
    另一种不需要使用DSN的连接方式。 
    SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));uid=myUsername;pwd=myPassword; 使用上面的连接字符串可能会导致Visual Studio报告错误,如果您在使用中出现了这些问题,请使用下面的这种连接方式。 
    Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword; 
    使用连接池 
    如果连接池服务程序找不到已经存在的连接池,它将根据连接字符串创建一个新的池,否则将循环使用池中已存在的连接。 
    Data Source=myOracleDB;User Id=myUsername;Password=myPassword;Min Pool Size=10;Connection Lifetime=120;Connection Timeout=60;Incr Pool Size=5;Decr Pool Size=2; 
    [Page]Windows身份验证 
    Data Source=myOracleDB;User Id=/; 
    特权连接 
    使用SYSDBA 
    Data Source=myOracleDB;User Id=SYS;Password=SYS;DBA Privilege=SYSDBA; 
    特权连接 
    使用SYSOPER 
    Data Source=myOracleDB;User Id=SYS;Password=SYS;DBA Privilege=SYSOPER; 
    密码过期处理过程 
    当使用一个连接字符串连接数据库后,出现“密码已过期”的错误时,请执行OpenWithNewPassword命令来提供新密码。 
    Data Source=myOracleDB;User Id=myUsername;Password=myPassword;oConn.OpenWithNewPassword(sTheNewPassword); 
    Proxy验证 
    Data Source=myOracleDB;User Id=myUsername;Password=myPassword;Proxy User Id=pUserId;Proxy Password=pPassword; 
    Core Labs OraDirect (.NET) Standard 
    User ID=myUsername;Password=myPassword;Host=ora;Pooling=true;Min Pool Size=0;Max Pool Size=100;Connection Lifetime=0; 
    Data Shape MS Data Shape 
    Provider=MSDataShape.1;Persist Security Info=False;Data Provider=MSDAORA;Data Source=orac;User Id=myUsername;Password=myPassword;
      

  2.   

    废话啊  你连接的是ORACLE  不是ACC  或者MYSQL