Я искал веб-страницы, и кажется, что единственный способ получить результаты от XP_CMDSHELL - это сохранить их в таблице temp. Нет ли более простого способа?
От обмена экспертами:
Нет, xp_cmdshell не вернет никакой информации из exe. и вы должны использовать следующие если вы не находитесь в основной базе данных для ее запуска. master..xp_cmdshell. Тебе придется предоставить пользователю разрешение на выполнение этой процедуры в основной базе данных. Вы должны будете ваш 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