2011-12-27 43 views
5

我們有一個計劃在Windows Server 2003上的任務計劃程序中運行的C#程序,該程序旨在根據從多個Oracle數據庫中提取的信息刪除文件夾中的過期文件。我可以手動執行應用程序,一切工作正常 - 以自己的身份登錄管理權限,或以具有用戶權限的指定任務用戶身份登錄。任務計劃程序中的Oracle錯誤

當任務用戶註銷的機器,但是,應用程序失敗有兩個錯誤之一每個數據庫上:要麼

ORA-12504:TNS:監聽器是不是在CONNECT_DATA

給出的SERVICE_NAME

ORA-12154:TNS:無法解析指定的連接標識符。

所有這些數據庫都使用連接字符串(從另一個SQL Server數據庫中檢索),正如我之前所述,手動操作時連接和運行得很好。我一直在網絡上尋找可能適用於這種情況的提示,並沒有提出明確的答案。

有沒有人閱讀此消息誰可能知道這個問題的答案?任何建議是最受歡迎的。

+0

您使用什麼方法連接Oracle數據庫? OLE DB? ADO.NET? ODBC? – Yahia 2011-12-27 20:53:50

+0

對不起,我們正在使用OLE DB。 – 2011-12-27 20:58:26

+0

Task Scheduler提供了一個不是「完整桌面」的運行時環境,而OLE DB需要這樣的環境。關於權限...使其工作使用ADO.NET,在這種情況下工作得很好... – Yahia 2011-12-27 21:22:11

回答

2

您的計劃任務設置爲執行哪個用戶?您測試過的其中一個用戶或另一個帳戶?

無論如何,它聽起來不像權限問題,儘可能不設置ORACLE_HOME環境變量。 (看起來您的程序可能試圖通過無法找到的tnsnames.ora文件進行連接。)您可能需要先讓計劃任務啓動一個設置環境的批處理文件,然後繼續調用您的C#程序。

+0

如果你正在手動運行這..它讓我想知道如果批處理過程,如果它從一個批處理運行可能有命令行參數搞砸了,或者環境變量沒有通過執行批處理文件過程來正確設置或存儲。手動運行你會認爲會產生相同的結果..檢查出所有與該計劃任務相關的文件依賴關係。如果它指向存儲的批處理文件中錯誤的數據庫或服務器,該怎麼辦?也許它是指向測試服務器或不存在的連接字符串......只是問答 – MethodMan 2011-12-27 21:00:45

+0

這也是我的第一印象,但組合中沒有TNSNAMES.ORA文件 - 全部通過連接字符串完成。這裏有一個例子:DRIVER = {Oracle in Orahome}; DBQ = VPDEV1.WORLD; UID = web_app; PWD = web_app; – 2011-12-27 21:00:59

+0

@MikePreston連接字符串需要TNSNAMES.ORA或ONAMES服務器才能工作 - 否則無法解析'VPDEV1.WORLD'! – Yahia 2011-12-27 21:23:31

2

我有類似的問題,但與一些Java應用程序。同樣的情況發生 - 手動任務執行沒問題,但自動執行總是失敗(同一個帳戶!)。

檢查您的管理員(或者您可以自己動手)並將您的C#應用​​程序設置爲由管理員帳戶執行(僅測試!)或查看是否有其他計劃任務並詢問他們以查看哪些窗口他們使用的帳戶以及設置方式。我記得我們(I + admin)不得不稍微嘗試一下,但最後他創建了一個新的特權帳戶(其他現有帳戶的副本)來執行計劃任務。