2013-10-18 69 views
0

我在Informatica forums上問了這個問題,但沒有人知道答案,所以現在我來這裏尋求幫助。Informatica命令任務

據我的理解,任何在「會後成功命令」字段都應該傳遞到適當的命令接口並執行。但是,當我使用IF語句時,它失敗。有任何想法嗎?

"IF 1==1 echo.bob >> f:\filename.txt" 

這個工程,當我手動輸入終端(在這種情況下DOS)。但是,當我把它變成一個可重複使用的命令的任務,我得到這個:

ERROR
POST-SESS
CMN_1949
Error: [Pre/Post Session Command] Process id 2996. The shell command failed with exit code 1.

PS:使用9.5.1修復1

+0

歡迎來到stackoverflow! –

+0

謝謝!我一直在尋找這個地方;終於找到了一個還沒有回答的問題,並且不得不註冊 – Taejang

+0

我猜想一個供應問題。如果你認爲你手動嘗試了它,你實際上是否使用與informatica集成服務器使用的登錄名登錄服務器? – whetstone

回答

0

我覺得這個問題是不是在Informatica的是如何執行命令。問題在於DOS如何返回錯誤代碼,特別是一些命令,如IFECHO does not。 (Informatica在DOS下的返回碼可以在DOS下用echo %ERRORLEVEL%查看,爲了方便起見,我將在這裏使用DOS的名稱,儘管在Windows下現在這樣做並不嚴格)

連續運行這些命令:

REM "cd" sets ERRORLEVEL => ERRORLEVEL is set to 0 
cd c:\ 
echo %ERRORLEVEL% 

REM "echo" does not set ERRORLEVEL => ERRORLEVEL is left unchanged 
echo.bob >> c:\filename.txt 
echo %ERRORLEVEL% 

REM "echo" does not set ERRORLEVEL => ERRORLEVEL is left unchanged 
echo.bob >> c:\thisdirdontexist\filename.txt 
echo %ERRORLEVEL% 

第一CD設置一個返回碼,在這種情況下爲0。
以下ECHO(具有或不具有IF試驗)不改變返回代碼,從而它仍然0即使最後ECHO失敗。

如果第一個CD命令會返回錯誤;

@echo off 
REM "cd" sets ERRORLEVEL => ERRORLEVEL is set to 1 
cd xxxxxx 
echo %ERRORLEVEL% 

然後所有後續ECHO將返回1,Informatica會使它們都失敗。

這表示它仍然很奇怪,因爲Informatica中的每個會話後成功命令都是在其自己的cmd-shell下執行的,所以每個命令的初始ERRORLEVEL應該總是爲0。我無法解釋這一點,不幸的是我可以我們在UNIX下運行時,實際上並沒有在Informatica中對此進行測試,但我確信這至少是問題的一部分。

要解決該問題,應確保在屬性選項卡上設置了「失敗任務,如果有任何命令失敗」選項。這使得Informatica使用cmd/c選項,並且因爲這設置了正確的返回碼,Informatica應該能夠正確地獲取錯誤(或成功)。如果這仍然無法正常工作嘗試改變命令自己到:

cmd /c "IF 1==1 echo.uncle >> c:\filename.txt"