我一直在网上搜索一些,它似乎是从XP_CMDSHELL获得结果的唯一方法是将它们存储到临时表中。真的没有更简单的方法吗?从XP_CMDSHELL获取结果
专家交流:
不,xp_cmdshell的将不会返回从exe文件的任何信息。如果您不在master数据库中运行它,则必须使用以下 语法。 master..xp_cmdshell。您必须 为您的用户授予在主数据库中执行此过程的权限。你必须有 你的EXE插入信息的自我,因为它不能将信息返回到 称为它的过程。
而且......
虽然@result仅会从xp_cmdshell的返回值,您可以通过直接插入到表......像这样捕获结果的命令 :
因人而异...
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