【发布时间】:2012-02-29 14:47:13
【问题描述】:
我一直在网上搜索一些,似乎从 XP_CMDSHELL 获取结果的唯一方法是将它们存储到临时表中。真的没有更简单的方法吗?
来自专家交流:
不,xp_cmdshell 不会从 exe 中返回任何信息。你必须使用以下 如果您不在 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
【问题讨论】:
标签: sql-server stored-procedures xp-cmdshell