2013-03-27 1 views
2

\\\twn-a110093\s$\SNData1.csv과 같은 숨겨진 경로를 사용하면 작동하지 않습니다.SQL에서 데이터를 내보내는 데 BCP 및 숨겨진 경로를 사용하는 중 오류

오류 메시지 :

[마이크로 소프트] [SQL 네이티브 클라이언트] BCP 호스트 데이터 파일

를 열 수 없습니다가 아마도 '$'문자가

을 인식하지? 이 문제를 어떻게 수정합니까?

Exec master..xp_cmdshell 'bcp " select * from sfm.dbo.tblSNDataDetail " queryout "\\twn-a110093\s$\SNData1.csv" -c -t, -T -S TWN-SQL-01' 

답변

2

단순히 BCP 데이터를 UNC 경로에 직접 연결할 수 없으며 이중 홉 문제가 발생하므로 2 대의 서버간에 제한된 위임을 설정해야합니다. 당신이해야 할 일은 먼저 로컬 드라이브에 BCP를 수행 한 다음 UNC 경로로 파일을 이동/복사하는 것입니다. 실제로이 파일을 올바르게 설정하더라도 BCP를 UNC 경로로 직접 보내는 것보다 빠릅니다. 믿거 나 말거나 믿어보십시오.

+0

흥미 롭 ... 프로세스가 SQL Server 서비스 계정에서 실행중인 경우 왜 이중 홉 문제가 발생합니까? – Moho

0

가능성이있는 보안 문제 :

SQL Server 서비스 계정의 사용자가 액세스 할 수 있는지 확인 "xp_cmdshell을에 의해 산란 윈도우 프로세스는 SQL Server 서비스 계정과 같은 보안 권한이있다" 해당 경로/파일.

+0

하지만 "계정 : 모든 사용자"에게 모든 권한을 부여합니다. –

+0

파일에 있습니까? 숨겨진 공유에 대한 사용 권한은 어떻게됩니까? – Moho

+0

동일합니다. "계정 : 모든 사람"의 모든 권한입니다. –

0

BCP 명령에서 UNC 경로를 사용하고 있으며 실제로는 루트 S $ 드라이브에 직접 파일을 만듭니다. 보안 점검이 필요합니다. 당신이 시도 할 수 있습니다 것은 : SQL 서버가 NT 서비스로 실행하면

1. 먼저, '테스트'폴더로 \twn-a110093\s$\Test\SNData1.csv

2 가지 적어 SQL Server 서비스 계정의 쓰기 권한 같은 하위 폴더에 드라이브 루트 폴더의 경로를 변경 , 네트워크 서비스 계정에 폴더 쓰기 권한을 부여해야합니다.

3. "twn-a110093"이 SQl 서버와 동일한 서버가 아닌 경우 파일 공유 폴더에 'everyone'을 입력해야합니다 허가.

4. 모두 작동하지 않으면 BCP를 로컬 폴더로 보낸 다음 UNC 경로에 robocopy 파일을 보내 @Guna가 말했듯이 파일을 UNC 경로에 직접 쓰는 것이 좋습니다.

+0

경로 "\\ twn-a110093 \ share \ SNData1.csv"를 사용하십시오. 작업 할 수 있습니다 ... –

+1

좋습니다. 그러나 직접 UNC 경로에 파일을 쓰는 것이 먼저 로컬에 파일을 쓰고 UNC 경로에 파일을 복사하는 것보다 느리다는 것을 기억하십시오. – ljh