我有一个Windows窗体应用程序,其中我尝试使用OracleManaged驱动程序连接到Oracle 11g数据库,该驱动程序以“ORA-12154:TNS:无法解析指定的连接标识符”的异常结束。但是,当我尝试通过ODP.NET 64bit dll连接时,它正在连接(为此我确保在x64中构建应用程序)。下面的示例代码。如果我切换到第二个语句,我在打开连接时收到错误。
Oracle.DataAccess.Client.OracleConnection con = new Oracle.DataAccess.Client.OracleConnection();
//Oracle.ManagedDataAccess.Client.OracleConnection con = new Oracle.ManagedDataAccess.Client.OracleConnection();
con.ConnectionString = "Data Source=v3;User Id=xxx;Password=xxx;";
con.Open();
MessageBox.Show("Done");
con.Close();
我缺少一个设置吗?即使我尝试使用配置为ODP(64位)的configure.bat
答案 0 :(得分:1)
原因很简单,您的托管驱动程序不知道在哪里可以找到TNSNAMES.ORA。 Oracle表示这取决于环境变量。 我们在这里做的是将TNS_ADMIN环境变量设置为包含TNSNAMES的文件夹,一切都运行良好。 这是最好的解决方案,因为它允许您在工作站上没有多个TNSNAMES.ora实例...
答案 1 :(得分:-1)
通过将tnsnames.ora文件复制到bin文件夹,我得到了这个功能。好像托管驱动程序找不到合适的tnsname.ora文件。