Получение результатов из XP_CMDSHELL

Я кое-что искал в Интернете, и мне кажется, что единственный способ получить результаты из 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
14
задан Saint Ronin 29 February 2012 в 16:28
поделиться