2012-03-28 14 views
0

以下のコードまたはSQL Server管理スタジオ2008でストアドプロシージャを実行すると、行が正常にコピーされたと表示されますが、ディスクに書き込まない理由はわかりません。いくつか私を助けてください、私は数日間のパスのためにこれで苦労してきました。私はコマンドシェルとすべてを有効にしています。奇妙なことは、それがコマンドラインから動作しますが、私は、ストアドプロシージャから実行するとき、それは、ディスクにファイルを書き込まない、いくつかは、いくつかは、私が@sqlの内容を印刷してくれ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

を助けることができる、と@ファイルパス。

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 

ファイルが作成され、これらの簡単なコマンドで連結しまいました!