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

  昨天,我在用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个小时居然浪费在一对小括号上!!

 

  感谢那位发帖人!感谢互联网!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞天神笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值