如何在没有 TNS 的情况下构建到 Oracle 的 .NET 连接字符串?

Posted

技术标签:

【中文标题】如何在没有 TNS 的情况下构建到 Oracle 的 .NET 连接字符串?【英文标题】:How to construct .NET connection string to Oracle without TNS? 【发布时间】:2013-06-15 20:48:31 【问题描述】:

我有一个 Sharepoint 2010 .NET 3.5 系统在我的本地 Windows 7 机器上运行,带有 IIS。我无法通过 Oracle.DataAccess.dll 连接到我们公司的 Oracle 数据库。我在 .NET webapp (sharepoint) 中收到的错误消息是“ORA-12154: TNS: could not resolve the connect identifier specified”。

这是个好消息:

我可以在同一台 PC 上使用 TOAD 很好地连接到这个数据库。 我们的 TEST 服务器可以通过 sharepoint/.net 和一切正常连接到数据库。

所以感觉就像我非常接近,只需要调整一些东西。我读过的一堆文章说要剪掉 TNS/ora 文件,然后通过构造一个 .net 连接字符串直接从 .net 到 DB:

connString="user id=usridname;password=yourpassword;data source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hostnamehere)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=servicenamehere))) ;"

我很想使用这种方法。我有用户名和密码,但我不知道如何发现其他部分。通过检查我的 TOAD 连接或通过查看 TEST 服务器上可用的某个文件来发现主机名、端口和服务名可能是一件简单的事情。但我不知道去哪里看,无论是在蟾蜍中,还是在它工作的测试服务器上。我拥有对测试服务器的完全远程桌面管理员访问权限,因此我可以查看任何内容。

有什么想法吗?

【问题讨论】:

【参考方案1】:

您需要找到您的tnsnames.ora 文件并检查条目。

从您正在运行的服务器的命令行运行tnsping,并使用您与toad 连接的连接名称。

> tnsping haki

TNS Ping Utility for 32-bit Windows: Version 10.2.0.3.0 - Production on 16-JUN-2013 14:14:10

Copyright (c) 1997, 2006, Oracle.  All rights reserved.

Used parameter files:
C:\oracle\product\10.2.0\db_3\network\admin\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = *****)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = haki))) 
OK (0 msec)

在网络参数目录下查找名为tnsadmin.ora 的文件。如您所见,就我而言,它是C:\oracle\product\10.2.0\db_3\network\admin\

如果此操作有效,或者您找到了文件但没有条目,请尝试运行 netca 并使用向导创建条目。

有时人们安装了多个客户端软件,而PATH 则一团糟。

【讨论】:

最好的解决方案是做一个 tnsping 然后抓取值来构造连接字符串: connString="user id=usridname;password=yourpassword;data source=(DESCRIPTION=(ADDRESS=( PROTOCOL=tcp)(HOST=hostnamehere)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=servicenamehere)));"

以上是关于如何在没有 TNS 的情况下构建到 Oracle 的 .NET 连接字符串?的主要内容,如果未能解决你的问题,请参考以下文章

linux下如何判断oracle数据库tns是否设置正常

oracle数据库tns配置方法详解

oracle tns permission denied

在WIN 7 下安装 ORACLE 10G创建数据库时报ORA- 12546: TNS:permission denied

plsql连接不上oracle,没有报错信息,一直登录不上

如何使用带有实体框架 6 的 TNS 别名连接到 Oracle DB?