我们有一个C#程序,计划在Windows Server 2003上的任务计划程序中运行,旨在根据从多个Oracle数据库中提取的信息删除文件夹中的过期文件。我可以手动执行应用程序,一切正常 - 以我自己的管理权限登录,或者以具有用户权限的已分配任务用户身份登录。
当任务用户从机器注销时,应用程序在每个数据库上失败并出现以下两个错误之一:
ORA-12504:TNS:听众没有获得CONNECT_DATA中的SERVICE_NAME
或
ORA-12154:TNS:无法解析指定的连接标识符。
所有这些数据库都使用连接字符串(从另一个SQL Server,数据库中检索),正如我之前所说的那样,在手动操作时连接并运行正常。我一直在网上寻找可能适用于这种情况的提示,并没有提出明确的答案。
是否有人阅读此邮件可能知道此问题的答案?任何建议都是最受欢迎的。
答案 0 :(得分:3)
您的计划任务集要执行哪些用户?您测试过的其中一个用户或其他帐户?
无论如何,它听起来不像权限问题,就像没有设置ORACLE_HOME
环境变量一样。 (看起来您的程序可能正在尝试通过无法找到的tnsnames.ora
文件进行连接。)您可能需要让计划任务首先启动一个设置环境的批处理文件,然后继续调用您的C#程序。
答案 1 :(得分:2)
我有类似的问题,但有一些Java应用程序。同样的事情 - 手动任务执行很好,但自动执行总是失败(同一个帐户!)。
与您的管理员核实(或者您可以自己完成)并将您的C#应用程序设置为由管理员帐户执行(仅测试!)或查看是否有任何其他计划任务并询问他们以查看哪个Windows帐户他们使用和如何设置。我记得我们(我+管理员)不得不进行一些实验,但最后他创建了一个新的特权帐户(一些其他现有帐户的副本)来执行计划任务。