【发布时间】:2016-04-13 17:09:11
【问题描述】:
我使用 OleDb 从 C# 连接到 Oracle,执行以下操作:
String connectionString = "Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=x;Password=y;Data Source=z";
var connection = new System.Data.OleDbConnection(connectionString);
connection.Open();
效果很好。
在同一进程中,我尝试使用托管驱动程序进行连接,执行以下操作:
String connectionString = "USER ID=x;PASSWORD=y;DATA SOURCE=z";
var connection = new Oracle.ManagedDataAccess.Client.OracleConnection(connectionString);
connection.Open();
失败并出现以下错误:
Oracle.ManagedDataAccess.Client.OracleException (0x80004005): ORA-12154: TNS:could not resolve the connect identifier specified ---> OracleInternal.Network.NetworkException (0x00002F7A): ORA-12154: TNS:could not resolve the connect identifier specified
at OracleInternal.Network.AddressResolution..ctor(String TNSAlias, String instanceName)
at OracleInternal.Network.OracleCommunication.DoConnect(String tnsDescriptor)
at OracleInternal.ServiceObjects.OracleConnectionImpl.Connect(ConnectionString cs, Boolean bOpenEndUserSession, String instanceName)
Server stack trace:
at OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
at OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, String affinityInstanceName, Boolean bForceMatch)
at OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword)
at Oracle.ManagedDataAccess.Client.OracleConnection.Open()
过去,当 tnsnames 出现问题时,我收到过类似的错误,但我从未遇到过 OleDb 在托管驱动程序不工作时工作的情况。
我已经仔细检查了两个连接字符串中的用户、密码和数据源是相同的。
【问题讨论】:
-
你的 TNSNames 中有什么?
-
你能试试 .. 没有 TNS 名称吗? connectionstrings.com/oracle-data-provider-for-net-odp-net/…
标签: c# .net oracle oracle-manageddataaccess