从XP_CMDSHELL捕获错误消息

时间:2010-09-22 14:56:39

标签: sql tsql

我正在运行以下命令:

EXEC @ReturnCode = master.dbo.xp_cmdshell @cmdline

在结果选项卡上,我得到2行  找不到路径'\ server \ directory \ filename'的一部分。  NULL

如何捕获错误消息中的第一行?我尝试使用带有“SELECT @ErrorMessage = ERROR_MESSAGE()”的Try Catch块,但它没有抓住它。

该消息不是来自sys.messages。这个错误消息从何而来?

1 个答案:

答案 0 :(得分:2)

错误来自命令shell本身,它不是SQL Server错误

获取错误的一种方法是

declare @cmdline varchar(500),@ReturnCode int
select @cmdline = 'dir f:'

create table #temp (SomeCol varchar(500))


insert #temp
EXEC @ReturnCode = master.dbo.xp_cmdshell @cmdline

if @ReturnCode <> 0
select * from #temp
where SomeCol is not null

但当然如果你做DIR C:该表将填充该命令的所有文件和文件夹