来自http://ora-12154.ora-code.com
ORA-12154:TNS:无法解析指定的连接标识符
原因:使用连接标识符请求连接到数据库或其他服务,并且使用配置的命名方法之一无法将指定的连接标识符解析为连接描述符.例如,如果使用的连接标识符类型是网络服务名称,则无法在命名方法存储库中找到网络服务名称,或者无法找到或到达存储库.
行动:
如果您使用本地命名(TNSNAMES.ORA文件):
确保"TNSNAMES"列为Oracle Net配置文件(SQLNET.ORA)中NAMES.DIRECTORY_PATH参数的值之一
验证TNSNAMES.ORA文件是否存在并且位于正确的目录中并且可以访问.
检查TNSNAMES.ORA文件中是否存在用作连接标识符的网络服务名称.
确保TNSNAMES.ORA文件中的任何位置都没有语法错误.寻找无与伦比的括号或流浪汉字符.TNSNAMES.ORA文件中的错误可能使其无法使用.
如果您使用目录命名:
验证"LDAP"是否列为Oracle Net配置文件(SQLNET.ORA)中NAMES.DIRETORY_PATH参数的值之一.
验证LDAP目录服务器是否已启动且可以访问.
验证是否在目录中配置了用作连接标识符的网络服务名称或数据库名称.
通过指定完全限定的网络服务名称或完整的LDAP DN作为连接标识符,验证所使用的默认上下文是否正确
如果您使用简单连接命名:
验证"EZCONNECT"是否列为Oracle Net配置文件(SQLNET.ORA)中NAMES.DIRETORY_PATH参数的值之一.
确保指定的主机,端口和服务名称正确无误.
尝试将连接标识符括在引号中.有关命名的详细信息,请参阅"Oracle Net Services管理员指南"或Oracle操作系统特定指南.
假设你正在使用TNSNAMES命名,这里有几件事要做:
创建/修改与OraHome90关联的network/admin子目录中的tnsnames.ora文件,以包含oracle数据库的条目:
> SERVICENAME_alias = > (DESCRIPTION = > (ADDRESS = (PROTOCOL = TCP)(HOST = HOST.XYZi.com)(PORT = 1521)) > (CONNECT_DATA = (SERVICE_NAME = SERVICENAME))
这假设您使用的是1521的标准Oracle端口.请注意,servicename_alias可以是您要在本地系统上使用的任何名称.您可能还会发现需要指定(SID = SERVICENAME)而不是(SERVICENAME = SERVICENAME).
执行tnsping servicename_alias以验证连接.在继续前进之前先做好这项工作.这将告诉您是否超过了12154错误.
假设一个良好的连接,使用控制面板创建一个ODBC DSN,为您选择的Oracle指定ODBC驱动程序(通常至少有一个Microsoft ODBC驱动程序,它应该充分作为概念证明).我会假设你给DATASOURCE的名字.在ODBC配置中使用servicename_alias作为服务器名称.
此时,您应该能够通过Access连接到您的数据库.我不是VB程序员,但我知道您应该能够转到文件 - >获取外部数据 - >链接表并连接到您的ODBC源.我认为你的代码也可以正常工作.