2012-03-28 2 views
0

Ниже, когда я выполняю хранимую процедуру в любом коде или в студии управления сервером SQL 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 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 

Файлы были созданы, и сцепляются с этими простыми командами!

Смежные вопросы