ORA-12154:TNS:无法解析 VS 2013 中指定的连接标识符
本文关键字:连接 标识符 2013 VS TNS ORA-12154 | 更新日期: 2023-09-27 18:37:14
我在VS2010中也有同样的项目,但是当我切换到VS2013时,我无法再连接到同一个Oracle DB。
到目前为止,我已采取的步骤:
我可以在VS2013中转到数据连接并连接到我想要的Oracle DB服务器。因此,驱动程序似乎正在工作。
但是我不确定为什么我无法在我的 DAL 中连接。
我有这样的代码:
using (OracleConnection oConn = new OracleConnection(_connString))
{
using (OracleCommand cmd = CreateOracleCommand(oConn, "GET_USERS", CommandType.StoredProcedure))
{
oConn.Open();
_connString在哪里是:
<add name="OracleTest" connectionString="Data Source=<SID>;User Id=<user>;Password=<password>;"/>
ODP.NET 管理器驱动程序尝试从以下位置解析数据源 TNS:
- .NET 配置文件中"
<oracle.manageddataaccess.client>
部分下的"数据源"部分中的数据源别名(即machine.config
,web.config
)。 tnsnames.ora
文件中的数据源别名,位于 .NET 配置文件中TNS_ADMIN
指定的位置。tnsnames.ora
文件中的数据源别名与.exe
位于同一目录中。tnsnames.ora
文件中的数据源别名存在于%TNS_ADMIN%
(其中%TNS_ADMIN%
是环境变量设置)。%ORACLE_HOME%'network'admin
中存在的tnsnames.ora
文件中的数据源别名(其中%ORACLE_HOME%
是环境变量设置)。
检查它们中的每一个是否有VS2010和VS2013。在某些时候,一定有区别。
更正更新:
根据此声明,Oracle 托管和 TNS 名称(发布者Alex Keh - 产品经理 - 甲骨文)列表仅对 ODP.NET 托管驱动程序测试版有效。
根据官方文档 .NET 数据提供程序开发人员指南ODP.NET 托管驱动程序使用此路径:
- .NET 配置文件中"
<oracle.manageddataaccess.client>
"部分下的"dataSources
"部分中的数据源别名。 tnsnames.ora
文件中的数据源别名,位于 .NET 配置文件中TNS_ADMIN
指定的位置。位置可以由绝对或相对目录路径组成。tnsnames.ora
文件中的数据源别名与.exe
位于同一目录中。
我建议不要使用 tnsnames 文件。 在我看来,使用无 tns 连接更便携。
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost) (PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));
User Id=myUsername;Password=myPassword;
如果要使用 EF,则需要 Oracle Tools for VS2013。
通过将连接字符串从简单的服务器/用户名/密码更改为 TNSNAMES 中匹配的字符串,我使 ADO 连接再次工作。奥拉。
当您设置 TNSNAME 时,这也将起作用。在预言机工具路径中,然后转到设置 EF 连接。
但是,我不确定当我去部署时,这会给我带来什么头痛。 我认为如果我可以在建立连接时使用 EZ Connect 设置,那将是一个更好的解决方案。(我目前无法上班)