【发布时间】:2018-04-28 15:55:34
【问题描述】:
我正在将 .Net 4.6.2 应用程序从使用 Microsoft 的 System.Data.OracleClient 迁移到 Oracle 自己的托管 ODP.Net(Nuget 包,版本 12.2.11)以连接到 Oracle 数据库。我安装了 Oracle 客户端(11gR2),除了更改引用、使用子句、类型名称等之外,代码几乎相同。但是,虽然我的迁移前代码连接得非常愉快,但迁移后的代码却无法连接。相反,它会抛出一个 OracleException
ORA-12504: TNS:listener was not given the SERVICE_NAME in CONNECT_DATA.
tnsnames.ora 文件是一样的,应用程序的连接字符串也是一样的,我以前从来不需要指定服务名。
TnsNames.ora:
ORACLEDBSERVER2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleDBServer2)(PORT = 1521))
)
(CONNECT_DATA =
(SID = orcdb10g)
(SERVER = DEDICATED)
)
连接字符串:
USER ID=MATTESTNHADMIN;PASSWORD=XXXXX;DATA SOURCE=oracledbserver2
为什么现在要求提供服务名称?即使我在 CONNECT_DATA 部分 (SERVICE_NAME = orcdb10g) 添加一个子句,我也会遇到同样的错误。
【问题讨论】: