Joh*_*n C 6 oracle windows-services
最新更新(2011年11月2日上午9点) 我尝试从服务运行tnsping,它工作!但是当我尝试连接时仍然会收到错误12154.我现在完全糊涂了,我无法理解tnsping如何正常工作但连接无法解析服务名称.
出于某种原因,当我从Windows服务运行以下代码(在计时器事件上)时,我收到错误:ORA-12154:TNS:无法解析服务名称(12154)
当我从Windows窗体应用程序运行完全相同的代码时,它连接就好了.服务和应用都在我的帐户下运行,因此帐户权限没有区别.
我很困惑为什么服务失败,有人可以对此有所了解吗?
string connectionString = ";DSN=o1;UID=SCOTT;PWD=TIGER;DBQ=ORCL;DBA=W;APA=T;EXC=F;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=F;BAM=IfAllSuccessful;MTS=F;MDI=F;CSR=F;FWC=F;PFC=10;TLO=0;";
OdbcConnection cnn;
cnn = new OdbcConnection(connectionString);
try
{
cnn.Open();
myEventLog.WriteEntry("Connection SUCCEEDED!!!");
cnn.Close();
}
catch (Exception ex)
{
string mes = "Connection FAILED!!!" + ex.Message;
myEventLog.WriteEntry(mes);
}
Run Code Online (Sandbox Code Playgroud)
更新:
1)我尝试过系统和用户dsn,两者都有相同的行为
2)我在系统环境变量中添加了一个TNS_ADMIN,以便它可以找到tnsnames.ora文件.这并未改变行为.
新更新(2011年11月1日):
1)许多建议都涉及将Oracle服务器的ip地址放在连接字符串中以绕过tnsnames.ora文件.不幸的是,应用程序必须使用用户设置oracle连接,因此我们没有任何这些信息.我必须与之合作的是DSN.我必须使用Oracle DSN从Windows服务进行连接.
新更新(2011年11月2日):1)看起来服务IS成功读取了tnsnames.ora文件.我运行了进程监视器并得到了这些行:
7:52:54.4365217 AM OracleService.exe 4624 CreateFile C:\oracle\ora92\network\Names\sdns.ora NAME NOT FOUND Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a
7:52:54.4368466 AM OracleService.exe 4624 CreateFile C:\Windows\SysWOW64\tnsnames.ora NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a
7:52:54.4371203 AM OracleService.exe 4624 CreateFile C:\oracle\ora92\network\ADMIN\tnsnames.ora SUCCESS Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened
7:52:54.4372693 AM OracleService.exe 4624 QueryBasicInformationFile C:\oracle\ora92\network\ADMIN\tnsnames.ora SUCCESS CreationTime: 01/11/2011 3:10:08 PM, LastAccessTime: 01/11/2011 3:10:08 PM, LastWriteTime: 01/11/2011 3:10:42 PM, ChangeTime: 01/11/2011 3:18:44 PM, FileAttributes: A
7:52:54.4372866 AM OracleService.exe 4624 CloseFile C:\oracle\ora92\network\ADMIN\tnsnames.ora SUCCESS
7:52:54.4375418 AM OracleService.exe 4624 CreateFile C:\oracle\ora92\network\ADMIN SUCCESS Desired Access: Read Data/List Directory, Synchronize, Disposition: Open, Options: Directory, Synchronous IO Non-Alert, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened
7:52:54.4375857 AM OracleService.exe 4624 QueryDirectory C:\oracle\ora92\network\ADMIN\tnsnames.ora SUCCESS Filter: tnsnames.ora, 1: tnsnames.ora
7:52:54.4376192 AM OracleService.exe 4624 CloseFile C:\oracle\ora92\network\ADMIN SUCCESS
7:52:54.4377770 AM OracleService.exe 4624 CreateFile C:\oracle\ora92\network\ADMIN\tnsnames.ora SUCCESS Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: N, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened
7:52:54.4379306 AM OracleService.exe 4624 ReadFile C:\oracle\ora92\network\ADMIN\tnsnames.ora SUCCESS Offset: 0, Length: 337, Priority: Normal
7:52:54.4380061 AM OracleService.exe 4624 ReadFile C:\oracle\ora92\network\ADMIN\tnsnames.ora END OF FILE Offset: 337, Length: 4,096
7:52:54.4380276 AM OracleService.exe 4624 CloseFile C:\oracle\ora92\network\ADMIN\tnsnames.ora SUCCESS
7:52:54.4385823 AM OracleService.exe 4624 CreateFile C:\oracle\ora92\network\ADMIN\ldap.ora NAME NOT FOUND Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a
Run Code Online (Sandbox Code Playgroud)
所以有人知道为什么在阅读tnsnames.ora文件后它可能会失败吗?谢谢
好吧,我将在这里回答我自己的问题,只是为了将最终的解决方案与引导我解决问题的有用建议分开。尼古拉引用的帖子(我仔细阅读后)结果有答案。我的服务是从 Program Files(x86) 运行的,并且 oracle 驱动程序无法处理调用应用程序的路径中的 ( )。
我将服务移至 D:\ServiceTest 并且工作正常。我现在的问题是,我认为我们的应用程序不能从 Program Files (x86) 中移出。
感谢大家的帮助,我感谢每个人的意见,但我必须将赏金交给尼古拉,因为他向我指出了包含答案的帖子。再次感谢你的帮助
| 归档时间: |
|
| 查看次数: |
7910 次 |
| 最近记录: |