2012-03-28 5 views
0

아래의 코드 또는 SQL Server 관리 스튜디오 2008에서 저장 프로 시저를 실행하면 행이 성공적으로 복사됩니다. 그러나 디스크에 파일을 쓰지 않는 이유는 아닙니다. 제발 좀 도와주세요, 나는 패스 며칠 동안 이걸로 고투하고있다. 커맨드 쉘과 모든 것을 가능하게했습니다. 이상한 것은이 명령 줄에서 작동하지만, 내가 저장 프로 시저에서 실행할 때, 그것은 디스크에 파일을 작성하지 않는 것입니다, 일부 일부는 나를BCP 저장 프로 시저가 디스크에 파일을 쓰지 않는 경우

USE [ColorDb] 
GO 

ALTER PROCEDURE [dbo].[prc_WriteTableToTextDelimitedFile] 
(
    @FilePath VarChar(256) 

) 
AS 
BEGIN 

DECLARE @sql varchar(8000) 

SET @sql = 'bcp "SELECT * FROM ColorDb.dbo.ColorTable" queryout "'+ @FilePath +'" -c -t; -T -SXXXXXXXXXXXX' 

Print @sql 

exec master..xp_cmdshell @sql 

END 

RETURN 

답변

1

내가 @Sql의 내용을 인쇄 할 수 있도록하고 있습니다 @파일 경로.

MS SQL Server 관리자 디버거 창에서 코드를 실행 했으므로 코드를 단계별로 실행할 수 있습니다. 나는 따옴표가 일치하지 않는 것 같았고, @FilePath를 초기화하는 곳을 보지 못했다. 마지막 세그먼트를 보면 가장 큰 따옴표가있는 것처럼 보입니다.

큰 따옴표를 사용하지 않았으므로 MSSQL Server Manager의 쿼리 작성기에서 쿼리를 실행했습니다. 파일 출력, 이동 된 파일, 연결된 파일 및 쿼리 창에서 가져온 것이 없습니다. 이 간단한 연결 명령처럼

:

Exec master..xp_cmdshell 'type c:\bcp\sysobjects.txt >> c:\bcp\a.txt' 

또한이 생성/출력 명령을

SELECT @sql = 'bcp master..sysobjects out c:\bcp\sysobjects.txt -c -t\t -T -S' + @@servername 

REPLACE(@sql, 'sysobjects.txt', @EmpRecordsFILENAME) 

EXEC master..xp_cmdshell @sql 

파일이 생성, 다음과 같이 간단한 명령으로 연결된있어!

관련 문제