He estado buscando en la web y parece que la única forma de obtener los resultados de XP_CMDSHELL es almacenarlos en una tabla temporal. ¿No hay realmente una manera más fácil?Obtener resultados de XP_CMDSHELL
De intercambio de los expertos:
No, xp_cmdshell no devolverá información del exe. y debe usar la siguiente sintaxis si no se encuentra en la base de datos master para ejecutarla. master..xp_cmdshell. Tendrá que dar permiso a su usuario para ejecutar este procedimiento en la base de datos maestra. Deberá tener su exe insertar la información en sí mismo porque no puede devolver información al proceso que lo llamó.
Y ...
Mientras @result sólo se obtiene el valor de retorno de xp_cmdshell, que puede ser capaz de capturar los resultados del comando insertando directamente en una mesa ... algo como esto:
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