Получить результаты от XP_CMDSHELL
Я немного искал в Интернете, и кажется, что единственный способ получить результаты от XP_CMDSHELL - это сохранить их во временной таблице. Неужели нет более легкого пути?
От Эксперта Биржи:
Нет, xp_cmdshell не вернет никакой информации из exe. и вы должны использовать следующий синтаксис, если вы не в основной базе данных, чтобы запустить его. master..xp_cmdshell. Вы должны будете дать своему пользователю разрешение на выполнение этой процедуры в базе данных master. Вам нужно будет, чтобы ваш exe вставил информацию сам, потому что он не может вернуть информацию процессу, который ее вызвал.
А также...
Хотя @result получает возвращаемое значение только из xp_cmdshell, вы можете получить результаты команды, вставив ее непосредственно в таблицу ... что-то вроде этого:
YMMV ...
set nocount on
declare @filepath varchar(255),
@cmd varchar(255),
@rc int
select @filepath = 'c:\temp\'
select @cmd = 'dir ' + @filepath + '~*.tmp'
create table #output (output varchar(255) null)
insert #output exec @rc = master..xp_cmdshell @cmd
select * from #output where output is not null
drop table #output