2009-05-26 80 views
3

我有一個.dtsx文件(一個SSIS包),用於從FTP服務器下載文件並導入數據。它在我手動運行時運行良好。但是,當我計劃將程序包作爲SQL Server代理作業中的一個步驟調用時,它會失敗。它失敗的步驟是我稱之爲.bat文件的步驟。在作業歷史記錄查看器中的錯誤這樣說:當作爲SQL中的步驟調用時,SSIS包不運行

Error: 2009-05-26 12:52:25.64
Code: 0xC0029151 Source: Execute batch file Execute Process Task
Description: In Executing "D:\xxx\import.bat" "" at "", The process exit code was "1" while the expected was "0". End Error DTExec: The package execution returned DTSER_FAILURE (1).

我認爲這是一個權限問題,但我不知道如何解決這個問題。作業所有者是管理員用戶,因此我已驗證他們有權訪問.bat文件所在的目錄。我試過進入服務並更改SQL Server代理的「登錄爲」選項,並且這兩個選項都不起作用(本地系統帳戶和此帳戶)。有沒有人有任何其他權限需要調整,以使其工作的想法?

回答

1

我試着只執行批處理文件作爲SQL Job步驟,它給出了更多細節。它表明,當我嘗試調用與我的.bat文件位於同一目錄中的可執行文件時,它失敗,但不在執行它的windows/system32目錄中。

我將可執行文件移動到了system32目錄,但後來我不知道我的文件被下載到了哪裏。然後我發現有一個名爲WorkingDirectory的執行進程任務(執行.bat的任務)的屬性。我將它設置爲bat所在的目錄,將可執行文件移回到與.bat文件相同的目錄中,並且它現在按預期工作。

1

您是在批處理文件中執行SSIS作業還是批處理文件是SSIS控制流中的一個步驟?

我假設後者爲這個答案。您使用什麼任務來執行批處理文件(例如,簡單執行程序任務或腳本任務)。如果是後者,看起來你的批處理文件實際上在某一步失敗,而不是SSIS腳本。我會檢查批處理文件嘗試訪問的權限

實際上,將批處理文件重寫爲SSIS中的腳本任務可能會更好,因爲您將獲得更好的錯誤報告(它會告訴你腳本中哪一步失敗)。

您可以嘗試在命令窗口中使用runas命令執行批處理文件。如果您嘗試在本地系統或網絡系統帳戶下執行它,它應該會給您一個更好的錯誤。如果發生錯誤,可以通過執行「echo%ERRORLEVEL%」來檢查錯誤級別。

如果不是後者,並且您通過批處理文件執行SSIS包,爲什麼?

+0

批處理文件在SSIS中的一個步驟中執行。這是一個執行進程任務。 從命令窗口運行時,批處理文件運行成功。當我手動運行SSIS包時,它也能成功運行。這就是爲什麼我認爲這個問題與權限有關,也許是MSSQLAGENT? – Pamela 2009-05-27 23:21:20

+0

當您遠程執行SSIS服務器時,是否通過runas命令執行批處理文件? 這應該使用SSIS執行它的權限執行它。 當你在Visual Studio中執行SSIS包時,它是否會給你同樣的錯誤? – Dane 2009-05-27 23:41:36

+0

感謝您的幫助,戴恩!我做了一些故障排除,並將該批處理文件作爲SQL作業中的一個步驟執行,並以此方式獲得了更有用的錯誤消息。從那裏,我能弄清楚這個問題! (請參閱下面的消息。) – Pamela 2009-05-28 00:29:47

0

您是否可能訪問.bat文件中的映射驅動器?如果是這樣,您不能依賴服務中的映射驅動器,因此您必須使用UNC路徑。

+0

不,該.bat文件不在映射的驅動器上。 – Pamela 2009-05-27 23:21:41

2

對我來說這是一個權限問題。轉到環境 - >目錄,然後將本地目錄更改爲SQLAgentUser可以訪問的內容。我用C:\ temp。點擊保存下拉菜單,然後選擇「設置默認值」。

0

我有同樣的錯誤,我解決它通過登錄到運行作業的用戶帳戶,有問題打開Coreftp條件的網站,測試網站訪問,所做的改變有(在我的情況,我不得不重新進入新的密碼),現在它工作。 所以是的,這是一個文件訪問的問題。這是對有問題的coreftp站點的文件訪問。

相關問題