5

当我点击 source.Open(); 时出现此错误 一行代码,我不知道为什么。我使用的是非托管 dll,我正在尝试升级到 Oracle.ManagedDataAccess.dll 64 位版本,我的项目正在使用 .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>

代码片段:

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();
//...
}

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

4

1 回答 1

6

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

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

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

于 2014-10-07T17:38:20.640 回答