我在尝试连接Oracle数据库时发现错误Visual stutio 2010
http://i.stack.imgur.com/BtIKu.jpg
http://i.stack.imgur.com/q6ffE.jpg
这是TNSNAMES.ORA:
TNS_ALIAS=
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =188.11.32.22)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
这是sqlnet.ora
# sqlnet.ora Network Configuration File: F:\app\user\product\11.2.0\client_1\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.
# This file is actually generated by netca. But if customers choose to
# install "Software Only", this file wont exist and without the native
# authentication, they will not be able to connect to the database on NT.
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
我现在该怎么办?
答案 0 :(得分:4)
在设置Connection字符串的DataSource属性时,您需要使用简写版本。您的TNSNames文件中的条目将转换为此
var conBuiler = new OracleConnectionStringBuilder();
//DataSource = "HOST:PORT/SERVICE_NAME"
conBuilder.DataSource = "example.domain.com:1521/x99.domain.com"
conBuilder.UserId = "SomeUser";
conBuilder.Password = "Password123";
var orCon = new OracleConnection(conBuilder.ConnectionString);
答案 1 :(得分:3)
这是老帖子,但因为我在同样的情况下,这个论坛出现了谷歌搜索的顶部,然后我决定发布我的解决方案。
我尝试将XML请求发送到Oracle服务器并从一个实例获取: ORA-12504:TNS:侦听器未在CONNECT_DATA中获得SERVICE_NAME
问题出在FQDN service_name中。它试图通过EZCONNECT解决它,但在Oracle 11g中,EZCONNECT根本不发送服务名称。
解决方案: 1.在“$ ORACLE_HOME \ database \ network \ admin \ sqlnet.ora”中仅使用NAMES.DIRECTORY_PATH中的TNSNAMES,如:
NAMES.DIRECTORY_PATH= (TNSNAMES)
在“$ ORACLE_HOME \ database \ network \ admin \ tnsnames.ora”中创建一个包含FQDN的附加部分。像:
示例= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS =(PROTOCOL = TCP)(HOST = example.domain.com)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = x99.domain.com) (SID = X) ) )
EXAMPLE.DOMAIN.COM = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS =(PROTOCOL = TCP)(HOST = example.domain.com)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = x99.domain.com) (SID = X) ) )
使用tnsping utilite ping两个名称:1)tnsping示例; 2)tnsping example.domain.com - 两个名字都必须回答。
NB!使用您自己的主机,SERVICE_NAME和SID;)
我希望它对某人有帮助。
BR
劳尔
答案 2 :(得分:0)
我在连接到oracle即时客户端时面临类似的问题, 1)在Suse / Redhat机器上连接到Oracle时出现问题 使用< export TWO_TASK = // xxxx.xxx.xxxx.xxxx:1521 / service_name> xxx.xxx.xxx - >表示服务器名称/地址
此处服务名称是在Oracle中创建的数据库,并在tnsnames.ora文件中提及
以下是tnsnames.ora文件的内容 ORDB = (DESCRIPTION = (ADDRESS =(PROTOCOL = TCP)(HOST = server_name)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORDB) ) )
2)在Solaris Sparc机器中解决相同的问题。
更新../odbc.ini文件
[dsn_name]
添加ServerName参数