您的位置:首页 > 数据库 > Oracle

.Net下使用System.Data.OracleClient出现“ORA-12154问题“TNS: 无法处理服务名”问题的解决

2008-12-02 10:02 826 查看
  昨天,我在用Visual Studio 2005 C#.Net写一段连接Oracle数据库的Windows系统服务程序时,发现每当连接Oracle数据库在OracleConnection.Open()事件中每次都出现“ORA-12154问题“TNS: 无法处理服务名”的错误,于是开始了下面的3个小时以上的原因查找。



  一开始以为是连接字符串没写正确,于是从以前写的其它程序中把连接字符串复制过来,结果问题依旧。



  找着,我以为是本机的Oracle客户端没配置好,于是检查Oracle的Net配置,Oracle没问题,但程序问题依旧。



  因为我的电脑上同时安装了Oracle 8和Oracle 9i,所以开始想到是不是程序在调用Oracle客户端版本时出现的问题?于是找了N个以前写过的Oracle相关应用程序,但那些程序运行都很正常,唯独昨天写的那段程序问题依旧。



  我又想到是不是我引用的System.Data.OracleClient有问题,于是反复地把这个组件从引用中去掉,然后重新引用,但问题依旧。



  昨天的程序中我引用到了两个自已写的Dll,于是怀疑是这两个Dll在写系统服务程序时会引用不到而导致整个程序问题,于是去掉了这两个引用,结果问题依旧。



  找了3个小时原因,未果。看看时间,已是凌晨,便回家睡觉去了。



  今天早上,写了一小段测试程序,把昨天那段代码里的数据库连接的三行小代码复制到测试程序中,结果运行正常。这下我敲坏脑袋都想不出昨天的那段代码有什么问题了。



  于是,来到互联网,找到一篇文章:http://www.cnblogs.com/render/articles/253688.html



  “使用OracleClient.OracleConnection时(我连的是Oracle 9i,其他版本未知),如果你的执行目录太长或者有括号等(未考察有些什么符号),那么即使你的服务名是对的,也会引起ORA-12154问题“TNS: 无法处理服务名”,当出现这个问题时,请也考虑这个原因。 ”



  看完后,还真发现我的程序代码存放的文件夹名中有一对括号“()”,根据帖子提示,我将文件夹名称中的括号去掉,结果昨天的那段代码运行正常了!!!



  晕死啊!!我的3个小时居然浪费在一对小括号上!!



  感谢那位发帖人!感谢互联网!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐