2014-04-02 2 views
0

원격 서버에서 BCP 명령을 실행하는 동안 문제가 발생했습니다.원격 서버에서 BCP 명령 실행

나는 스크립트 파일을 실행하는 배치 파일에서 다음 명령을 사용합니다. 스크립트 파일이 임시 테이블을 처리하고 임시 테이블의 레코드를 파일에 기록합니다.

SQLCMD -SQA_Server236 -dtestdb -Usa -PPassword1 -i"D:\script\Writing to Files\Write to CSV.sql" -o"D:\script\script_logs.log" 

--script 파일은 ... 포함

declare @table NVARCHAR(255) 
declare @filename VARCHAR(100) 
set @filename='C:\TextFile\abcd.csv' 
set @table ='##Indexes_Add' 




    IF OBJECT_ID('tempdb..#Indexes_Add') IS NOT NULL 
    BEGIN 
    DROP TABLE ##Indexes_Add 
    END 


CREATE TABLE ##Indexes_Add 
(
    id int IDENTITY(1,1) PRIMARY KEY, 
    alter_command NVARCHAR(MAX), 
    successfully_readded BIT NULL, 
) 

    insert into ##Indexes_Add select 'a',0 
    insert into ##Indexes_Add select 'a',0 
    SET NOCOUNT ON; 

    IF OBJECT_ID('tempdb..'[email protected]) IS NOT NULL 
    BEGIN 
    DECLARE 
     @sql NVARCHAR(MAX), 
     @cols NVARCHAR(MAX) = N''; 


     SELECT @cols += ',' + name 
     FROM tempdb.sys.columns 
     WHERE [object_id] = OBJECT_ID('tempdb..'[email protected]) 
     ORDER BY column_id; 




    SELECT @cols = STUFF(@cols, 1, 1, ''); 




    SET @sql = N'EXEC master..xp_cmdshell ''bcp "SELECT ''''' 
     + REPLACE(@cols, ',', ''''',''''') + ''''' UNION ALL SELECT ' 
     + 'RTRIM(' + REPLACE(@cols, ',', '),RTRIM(') + ') FROM ' 
     + 'tempdb.dbo.'[email protected] + '" queryout "' + @filename + '" -c -t, -SQA_Server236 -Usa -PPassword1'''; 



    EXEC sp_executesql @sql; 
    print @sql 

    END 

내 problem- :

내가 배치 파일에서 위의 배치 명령을 실행하고 난 서버가 아닌 내 로컬 서버를 제공하는 경우 이름 "QA_Server236", "abcd.csv"파일을 내 시스템에서 만들었지 만 서버 이름을 "QA_Server236"으로 지정하면 파일이 원격 시스템 즉 QA_Server236에 생성됩니다. 하지만 주어진 서버가 "QA_Server236"이라고 말하면 원격 서버라고 내 시스템에서 파일을 만들고 싶습니다.

누구든지이 문제에 도움을 줄 수 있습니까? 나는 그렇게 할 방법이 없다.

+0

도움이 필요하십니까? – Axs

답변

0

내가 맞으면 결과 세트 및/또는 원격 컴퓨터에 로그를 저장할 수 없습니다. 하지만 원격 컴퓨터의 폴더를 로컬 컴퓨터의 공유 폴더에 마운트하고 출력 위치를 설정하거나 네트워크 경로 "\ [YOURPC] ...."를 사용해보십시오.

확실하지는 않지만 (실제로는 그렇지 않다고 생각합니다.) 내가 생각할 수있는 유일한 해결책은 다음과 같습니다. 원격 컴퓨터에서 PC로 파일을 이동시키는 배치에 줄을 추가하십시오. (xcopy 또는 이와 유사한) BCP가 실행을 마친 후에 ("bcp.exe ..."대신 "bcp.exe [params] 호출"로 수행)


희망이 있습니다.