最近用WinForm做了一个连接Oracle数据库的小工具,开发时倒没什么问题,能正常连接数据库。可后来在使用的时候发现连接不上数据库,显示不能解析OracleConnection的连接字符串,且应用程序文件夹自动生成一个日志文件Sqlnet.log并含如下错误信息:
***********************************************************************
Fatal NI connect error 6413, connecting to:
(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oracleORCL)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))')))(CONNECT_DATA=(SID=ORCL)(CID=(PROGRAM=D:/Temp/TestCodeTool(Empty)/CodeToolV1.0/CodeTool.exe)(HOST=YEWEN)(USER=Jasson))))
VERSION INFORMATION:
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
Time: 10-6月 -2010 16:54:50
Tracing not turned on.
一样的环境一样的配置怎么就不行了呢?后来经过测试原来是因为我修改了文件夹名称,且文件夹名种含有括号。原来Oracle数据库应用程序的路径里是不能含有括号的,准确的说是不能含有右括号的。
从以上的错误信息可以看到,tnsname中各项参数都是用括号括起来的,其中PROGRAM中就包含了应用程序的路径,如果应用程序路径中本身就包含了右括号,它就会人员这个参数项已经结束,所以就不能正常解析了。