2012-12-17 3 views
1

psftp.exe를 사용하여 원격 서버에 연결하고 제거하기 전에 파일을 검색하기 위해 명령 프롬프트에 쓴 명령이 있습니다. 명령 프롬프트에서 실행하면 완벽하게 작동합니다. SQL 에이전트 작업의 명령 창에 넣고 작업을 실행하면 멈 춥니 다. 명령을 보면이 문제를 일으킬만한 것이 있습니까?SQL Agent 작업에서 CmdExec을 실행할 수 없습니다.

실행 파일이 프롬프트를 표시하면이 동작이 발생하지만 물론 psftp.exe는 문제가되지 않는다고 들었습니다.

전체 관리자 권한이있는 로컬 사용자로 작업을 실행하고 있습니다.

psftp.exe에 대한 명령을 읽으려면 작업의 명령이 텍스트 파일을 열 것이라고 추가해야합니다. 나는 이것에 대한 명령도 포함시켰다.

홈페이지에 CmdExec 명령 :

W:\Software\psftp\psftp.exe -pw password1 -b W:\Software\psftp\Retrieval.txt -batch [email protected] 

텍스트 파일 psftp.exe는 암호 문제 같은 간단한 일을 할 것인가

cd out 
lcd "C:\Documents and Settings\MyUser\My Documents\" 
mget /out/*.txt 
rm /out/*txt 
quit 

답변

1

여기의 문제는 두 가지입니다. 첫째, SQL 에이전트 작업이 프로덕션 서버의 '서비스'계정에서 실행되고있었습니다. 이 서비스는 서비스 실행에 사용되는 서버의 별도 사용자 계정입니다. 문제는 아니지만 설명 하겠지만 근본적인 원인이었습니다.

처음 PSFTP.exe를 수동으로 실행했을 때 요구 사항에 대한 솔루션 (느슨하게 결합 된 설명 관리자라고 읽음)이 나오면서 레지스트리에 키를 추가하라는 메시지가 표시되었습니다. 나는 이것에주의를 기울이지 않았다. 그리고 내가 프로세스를 자동화하고 싶을 때 뒤에서 나를 물었다. 명령 줄을 통해 디버깅하는 동안 대부분 로컬 사용자로 실행 중이었기 때문에 전혀 문제가 없었습니다. 배치 파일 등을 SQL Agent 작업에 넣으려고 할 때 나는이 같은 작업에 항상 '서비스'사용자 계정을 사용하기 때문에 실행중인 사용자를 효과적으로 변경했습니다. 물론이 사용자는 외부 sFTP 서버에 연결하기 위해 레지스트리 키를 추가하지 않았습니다.

이 문제를 해결하려면 '서비스'계정으로 컴퓨터에 로그인하여 별도의 사용자로 PSFTP.exe 프로그램을 수동으로 실행하고 레지스트리 키를 추가해야했습니다. 이렇게하면 SQL 에이전트 작업이 성공적으로 실행되었습니다. 그런 단순한 일이지만 예외 나 로그가 표시되지 않았기 때문에 두통이 많이 발생했습니다.

0

명령? 이벤트 로그를 확인 했습니까? 여기에 이벤트 로그 보고서를 게시 할 수 있습니까?

+0

안녕하세요. 이 스크립트는 명령 프롬프트에서 잘 작동하므로 비밀번호 문제는 아예 없습니다. 아무 일도 일어나지 않으므로 로그에 아무 것도 표시되지 않습니다. 나는 그것을 실행하려고 할 때 단지 멈추는 것처럼 일을 멈춰야 만한다. – CSharpened

+0

인터넷 검색의 또 다른 아이디어는 작업의 여러 줄 일 수 있습니까? .cmd 파일에 명령을 입력하고 작업을 실행하십시오. – Paul

+0

나는 당신이 의미하는 바가 확실하지 않았기 때문에 원래의 질문을 재 형식화했다. 원래 명령은 모두 한 줄입니다. 두 번째 명령 집합은 이미 텍스트 파일에 있으며 PSFTP.exe에서 읽습니다. – CSharpened

관련 문제