SQL Server 2000을 SQL 2000에서 SQL 2008로 업그레이드하는 프로덕션 환경에 코드를 배포하는 중입니다.xp_cmdshell 오류 "파일 이름, 디렉터리 이름 또는 볼륨 레이블 구문이 잘못되었습니다."
일부 데이터를 가져 오는 저장 프로 시저 중 하나에서 신비한 문제가 있습니다. 데이터베이스에서 다음 bcp (성공)를 통해 몇 가지 파일을 만듭니다, 그리고 그것은 몇 가지 이동 명령을 실행하려고하면 그들은 폴더가 확실히 존재하고 서비스가 sysadmin으로 실행되고 있지만 모두 실패합니다. 내가 돌아올 반환 명령 줄 오류가
"The filename, directory name, or volume label syntax is incorrect."
xp_cmdshell Error Executing "move H:\Transfer\CHAD\Outbound\AllCards\*.* H:\Transfer\CHAD\Outbound\AllCards\Archive\"
입니다
그set @cmd_string = 'move '+ @OutPath_AllCards + '*.* '+ @ArchivePath_AllCards
delete from @tbl_xp_cmdshell_output
Insert @tbl_xp_cmdshell_output exec @error_temp = master.dbo.xp_cmdshell @cmd_string
을이 오류 메시지입니다 :
이 그것을 실행하려고하는 코드는
동일하게 설정 한 UAT 데이터베이스 버전에서 정상적으로 작동합니다.
제안 사항이 있으십니까?
업데이트 :
소스 디렉토리에는 파일이없는 경우 나 오류를 재현 할 수 있습니다. 아마도 원본 디렉토리에 파일이 있어야한다고 생각하지만 bcp가 작성하기 전에 지연이 있는지 궁금합니다. 이동을 실행하면 아직 존재하지 않습니다. 어떤 아이디어?
xp_cmdshell을 사용하여 b) sysadmin 권한으로 서비스 계정을 실행하는 중대한 보안 허점을 알고 있습니까? 전략을 다시 방문하겠습니다! –
나는 ' t 문제가 누락 된 따옴표라고 생각하면 두 번째 출력이 더 낮아지고 그 결과가 결과 테이블에서 파싱됩니다. xp_cmdshell의 위험을 알고 있습니다. 물론,하지만 때로는해야합니다 – jazza1000
죄송합니다, 내 질문을 편집 할 수없는 것, 그래서 내가 코멘트로 넣어 것입니다 - 나는 소스 디렉토리에 파일이없는 경우 오류를 재현 할 수 있습니다. 아마 거기에 있어야한다고 생각 소스 디렉토리에있는 파일은 있지만 bcp가 작성하기 전에 지연이 있는지 궁금합니다. 이동을 실행하면 아직 존재하지 않습니다. 어떤 아이디어입니까? – jazza1000