如何在没有 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 连接字符串?的主要内容,如果未能解决你的问题,请参考以下文章
在WIN 7 下安装 ORACLE 10G创建数据库时报ORA- 12546: TNS:permission denied