2013-10-18 4 views
0

나는이 질문에 Informatica forums으로 질문을했지만 아무도 그 대답을 모르는 사람 이었으므로 지금 여기에 도움이 될 것입니다.Informatica 명령 작업

필자의 이해를 돕기 위해 "post-session success command"필드의 내용은 적절한 명령 인터페이스로 전달되어 실행되어야합니다. 그러나 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

welcome to stackoverflow! –

+0

감사! 나는 항상이 장소를 검색한다. 마지막으로 아직 답변되지 않은 질문을 찾아서 – Taejang

+0

에 가입해야만했습니다. 권리 문제에 대해 추측 할 수 있습니다. yoy가 수동으로 시도했을 때 실제로 informatica 통합 서버 사용과 동일한 로그온을 사용하여 서버에 로그인 했습니까? – whetstone

답변

0

사용. 문제는 DOS가 오류 코드를 반환하는 방법에 있으며 특히 IFECHO과 같은 일부 명령은 그렇지 않습니다. (인포매티카는 DOS에서 픽업 리턴 코드가 DOS에서 echo %ERRORLEVEL%로 볼 수있다, 나는 편의를 위해 여기에 이름 DOS를 사용합니다 비록 윈도우가이 엄격 올바른 is'nt 아래)

실행 연속으로 다음 명령을 :

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 따라서는 여전히 상기 (로 또는 IF 테스트없이) 리턴 코드를 변경하지 않고 ECHO 다음 0
이 경우, 리턴 코드를 0으로 설정하더라도 마지막 ECHO을하지만 실패합니다.

첫 번째 CD 명령이 오류를 반환하면;

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

는 모든 후속 ECHO 1 반환 및 인포매티카는 둘 다 실패합니다.

Informatica의 각 세션 종료 성공 명령이 자체 cmd-shell에서 실행되기 때문에 여전히 이상하다고합니다. 따라서 모든 명령에 대한 초기 ERRORLEVEL은 항상 0이어야합니다. 그 사실을 설명 할 수는 없지만 불행히도 UNIX에서 실행될 때 Informatica에서 이것을 실제로 테스트하지는 않지만 이것이 적어도 문제의 일부라고 확신합니다.

문제를 해결하려면 속성 탭에서 "명령 실패시 작업 실패"옵션을 설정해야합니다. 이로 인해 인포매티카는 cmd/c 옵션을 사용하고 Informatica가 올바른 리턴 코드를 설정 했으므로 Informatica가 오류 (또는 성공)를 올바르게 선택할 수 있어야합니다. 그래도 제대로 작동하지 않으면 직접 명령을 변경해보십시오.

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