Команда xp_cmdshell copy редко дает сбой - PullRequest
0 голосов
/ 21 февраля 2011

Я использую SQL Server 2005 на компьютере под управлением Windows Server 2003.

У меня есть требование накапливать небольшие текстовые файлы в больший.

Поэтому я использую

exec xp_cmdshell @sql

где @ sql =

'copy /b'+@sourcePath+@sourceFile+' '+@destinationPath+@NewFileName

И исходный, и целевой путь находятся на отдельном сервере.

Редко этот процесс завершается неудачно, и я не вижу ничего другого в событии илиЖурналы SQL Server.

Конфигурация поверхности для xp_cmdshell также включена.

Пожалуйста, помогите .....

1 Ответ

0 голосов
/ 21 февраля 2011

Я только что проверил это на моем сервере sql 2005, и EXEC dbo.xp_cmdshell всегда возвращает вывод (даже в случае фиктивной команды) в форме таблицы.Для C #, если вы вызываете этот код с помощью ExecuteNonQuery , затем вызываете его с помощью ExecuteReader и читаете вывод.В качестве альтернативы вы можете вывести вывод в таблицу, чтобы вы могли просмотреть его позже на досуге.Создайте таблицу, подобную этой:

CREATE TABLE [dbo].[xp_cmdShellOutput](
    [errorMsg] [nvarchar](max) NULL
)

, а затем используйте этот код:

DECLARE @sql AS VARCHAR(600)

SELECT  @sql = '<your command>'

INSERT  dbo.xp_cmdShellOutput(errorMsg)
EXEC dbo.xp_cmdshell @sql
...