使用 OracleConnection.Open() 时出错 ORA-00303:网络库:名称-值语法错误 ODP.NET 托管 dll

use*_*442 5 .net c# oracle odp.net-managed

当我点击 source.Open(); 时出现此错误;代码行,我不知道为什么。我正在使用非托管 dll,我正在尝试升级到 64 位版本的 Oracle.ManagedDataAccess.dll,我的项目正在使用 .NET 框架 4。TNS 字符串在生产 tnsnames.ora 文件中工作(我已经替换了各种元素名称和值)。从错误来看,似乎有些事情显然是错误的,但我无法让它工作。

app.config 中的 TNS:

<oracle.manageddataaccess.client>
<version number="*">
  <dataSources>
    <dataSource alias="ABC_DEF_GH" descriptor="ABC_DEF_GH =    (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = server.company.com)(PORT = 11111))(CONNECT_DATA = (SERVICE_NAME = ABC_DEF_GH.company.com)))"/>
  </dataSources>
</version>

</oracle.manageddataaccess.client>
Run Code Online (Sandbox Code Playgroud)

代码片段:

using (OracleConnection source = new OracleConnection("UserId=xxxxx;Password=xxxxxx;DataSource=ABC_DEF_GH;"))
{

OracleCommand command = new OracleCommand(transferConfig.QueryLogic + WhereClause, source);
//The time (in seconds) to wait for the command to execute. The default is 30 seconds.
command.CommandTimeout = transferConfig.SourceCommandTimeout;
// command.Connection.ConnectionTimeout is set in the connection string only
source.Open();
//...
}
Run Code Online (Sandbox Code Playgroud)

错误:ORA-00303:网络库:名称-值语法错误

Rex*_*Rex 6

您的连接字符串应遵循以下格式:

SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort))(CONNECT_DATA=(SERVICE_NAME=MyOracleSID)));uid=myUsername;pwd=myPassword;
Run Code Online (Sandbox Code Playgroud)

请检查此格式,该错误与使用不正确的连接字符串格式有关。

  • 感谢您的答复。传入的连接字符串没问题。app.config 文件的数据源节点中的描述符不正确。一旦我删除了“ABC_DEF_GH =”,只有以下内容:descriptor =“(DESCRIPTION ...解决了错误。再次感谢您! (2认同)