Bcp хранимая процедура не записывает файл на диск - PullRequest
0 голосов
/ 28 марта 2012

Ниже, когда я выполняю хранимую процедуру в коде или в sql server management studio 2008, он говорит, что успешно скопировал строки, но я не уверен, почему он не записывает файл на диск. могут ли некоторые помочь мне, я боролся с этим в течение нескольких дней. У меня есть включить командную оболочку и все. Странно то, что он работает из командной строки, но когда я выполняю хранимую процедуру, он не записывает файл на диски, могут ли некоторые помочь мне

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 Ответ

1 голос
/ 27 июля 2012

Я бы распечатал содержимое @sql и @ FilePath.

Я только что прогнал некоторый код через окно отладчика MS SQL Server Manager, вы могли бы пройтись по коду.Я заметил, что вы, кажется, не сопоставили свои кавычки, и я не вижу, где вы инициализируете @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

Файлы были созданы и объединены с помощью этих простых команд!

...