日期:2014-05-17  浏览次数:20467 次

SQL2005语法问题,求助。
Declare @r Varchar
set nocount on
exec @r=master..xp_cmdshell 'sqlcmd -S 192.168.1.1 -U sa -p sa',no_output
if @r='0'
print '正常'
else
print '异常'
这段语句单独执行是没问题的。
但是,把@r=master..xp_cmdshell 'sqlcmd -S 192.168.1.1 -U sa -p sa',no_output这里替换成
@r=master..xp_cmdshell @S,no_output  ,其中@S='''sqlcmd -S '+@IP+' -U sa -p sa'''
@IP是一个游标定义的IP地址集。
替换后的@r如果print出来看是没错的。
但是就是执行后,无论该IP地址的SQL是否连接,@r的值都是等1.显示异常。
------解决方案--------------------
你改成这样试试,我本机测了一下可以的
Declare @Vs_sql Varchar(8000),
@Userip Varchar(30),
@s Varchar(1000),
@Ip Varchar(30),
@Result Varchar(1)
set @s='sqlcmd -S '+@Ip+' -U sa -P sa'
print (@s)
set nocount on

EXEC @result= master..xp_cmdshell @s
if @Result='0'
print '正常'
else
print '异常'