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