Сообщение об ошибке отлова от XP_CMDSHELL - PullRequest
0 голосов
/ 22 сентября 2010

Я выполняю следующую команду:

EXEC @ReturnCode = master.dbo.xp_cmdshell @ cmdline

На вкладке Результаты я получаю 2 строки Не удалось найти часть пути '\ server \ directory \ filename'. NULL

Как мне захватить первую строку в сообщении об ошибке? Я попытался использовать блок Try Catch с «SELECT @ErrorMessage = ERROR_MESSAGE ()», и он не захватывает его.

Сообщение не приходит от sys.messages. Откуда это сообщение об ошибке?

1 Ответ

2 голосов
/ 22 сентября 2010

Ошибка исходит из самой командной оболочки, это не ошибка SQL Server

Один из способов получить ошибку -

declare @cmdline varchar(500),@ReturnCode int
select @cmdline = 'dir f:'

create table #temp (SomeCol varchar(500))


insert #temp
EXEC @ReturnCode = master.dbo.xp_cmdshell @cmdline

if @ReturnCode <> 0
select * from #temp
where SomeCol is not null

, но, конечно, если вы выполняете DIR C:таблица будет заполнена всеми файлами и папками этой команды

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...