2017-02-16 13 views
0

최근에 모든 데이터베이스를 MyServerA에서 MyServerB으로 이동했습니다. 모든 MyServerA에 잘 작동,하지만 난 xp_cmdshell를 사용하여 bcp 명령을 호출 할 때, 나는 다음과 같은 오류 얻을 :SQL Server BCP 호스트 데이터 파일을 열 수 없습니다.

Error = [Microsoft][SQL Server Native Client 11.0]Unable to open BCP host data-file 

일부 정보 :

  1. 을 나는 '사용자를 확신 MyServerB 아래에 로그인하면 내가 게시하려고하는 원격 서버 위치에 할당 된 권한이 있습니다. 명령 프롬프트에서 "whoami"를 실행하고 원격 폴더 (btw가 공유 됨)에 대한 모든 권한을 보안에 추가했습니다. 또한지도에 매핑하거나 잘 액세스 할 수 있습니다.

  2. 흥미롭게도 Access denied 메시지가있는 sp_send_dbmail을 사용하여 첨부 파일로 보내려는 기존 위치의 기존 파일을 보내려고 할 때. 보안상의 문제로 보입니다. 그러나 위의 # 1을보십시오.

  3. 로컬 MyServerB에있는 폴더에 저장하려고했지만 그 중 하나를 수행 할 수 없습니다.

샘플 코드 : xp_cmdshell을에서

DECLARE @bcp varchar(2000); 

SET @bcp = 'bcp "SELECT 1" queryout "\\MyServerA\Reports\MyFile.txt" -c -T -S MyServerB'; 

EXEC master..xp_cmdshell @bcp; 
+0

bcp는 텍스트 내보내기 도구가 아닙니다. 왜 SSIS를 사용하지 않습니까? 'xp_cmdshell'을 실행하기 위해 권한을 강화해야한다는 사실은 경고가되어야합니다. –

+0

어쨌든, 왜 SQL Server 내부에서'bcp'를 실행합니까? 명령 줄에서 실행하거나 예약 된 작업에서 주기적으로 실행되도록 예약 할 수 있습니다. SQL Agent에서 실행되도록 명령을 예약 할 수도 있습니다. 'xp_cmdshell'을 실행하려면 보안을 약화시켜야합니다. –

+0

이것은 내가 상속 한 것입니다. 이 시점에서 SSIS로 업데이트하거나 스크립트 또는 방법을 변경하는 권한이 있습니다. 이것은 이전 상태로 작동하고 있었고 그대로 고정되기를 원했습니다. 생각해 줘서 고마워. – ptownbro

답변

0

전문가 인 친구에게갔습니다. 문제는 SQL 서버가 xp_cmdshell을 실행하려고 시도한 serivce 계정에 권한을 제공해야한다는 것입니다.

실행중인 SQL Server 서비스와 관련된 "로그온"계정을 볼 때 "서비스"계정의 이름이 달라졌습니다. NT 계정이 기본 인스턴스 이름과 연결되어 있습니다. 당신이 선택한 것은 "SERVICE"라는 계정입니다.

또한 이전 컴퓨터는 해당 계정에 권한을 추가하지 않아도 작동하는 것처럼 보였습니다.

어쨌든 이제 작동합니다.

도움과 관심에 감사드립니다.

0

실행 whoami를, 나는 당신에게 다음에 수행해야 할 어떤 실마리를 줄 것이다 확신합니다.

+0

"whoami"를 실행했기 때문에 권한이 올바르게 설정되었는지 확신합니다 – ptownbro