2012-03-28 84 views
0

下面當我在代碼或sql server management studio 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服務器管理器。我得到了文件輸出,移動文件,連接文件以及不在查詢窗口中的文件。

像這種簡單的拼接命令:

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 

的文件已經建立,並與這些簡單的命令連接起來!