3

我们使用 System.Data.OracleClient 和抽象基类 DbConnection、DbCommand(等)连接到 Oracle。

在我们的开发阶段,连接工作正常。在暂存期间,我们遇到错误 ORA-12514:TNS:listener 目前不知道连接描述符中请求的服务。

我们的目标是在没有 TNS 条目的情况下进行连接,并在连接字符串中提供所有相关信息 (www.connectionstrings.com/oracle#19)

我可以确认 SQL plus 将从登台服务器连接到所需的模式(侦听器正在侦听)。连接到 SQLPlus 的 TNS 条目与正在构建的查询字符串的所有凭据相匹配。

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

我们错过的服务器上是否有安装?我们可以调整什么?

任何帮助表示赞赏。

4

4 回答 4

7

SID 不是服务名称。服务名称通常是完全限定的数据库名称,而 SID 是短标识符。

服务名称可能是 dbname.company.com,而您的 SID 是 dbname。一个实例实际上可以有多个与之关联的服务名称,但只有一个 SID。

在连接字符串中将 SERVICE_NAME 更改为 SID,或为 SERVICE_NAME 选项指定服务名称。

于 2009-09-29T15:00:42.380 回答
0

如果我没记错的话,在我切换到使用 Oracle 提供程序以及 OracleDbConnection 和 OracleDbCommand 之前,我遇到了同样的问题。通用的并不总是在所有情况下都实例化正确的提供者。

于 2009-09-29T14:12:36.103 回答
0

Microsoft 弃用了 System.Data.OracleClient 参见这篇文章:http: //blogs.oracle.com/databaseinsider/2009/07/microsoft_deprecates_systemdataoracleclient_net_developers_for_oracle_should_migrate_to_oracle_data_provider_for_net.html

于 2009-09-29T14:14:52.810 回答
0

如果您的 Oracle 客户端版本为 10+,您还可以使用EZCONNECT(它代表Easy Connect 命名方法)。您的连接字符串将如下所示:

"Data Source=MyHost:MyPort/MyServiceName;User ID=myUserName;Password=myPassword"

结合Oracle Instant Client,让Oracle的使用感觉近乎专业!...

于 2009-09-30T07:35:05.017 回答