SQL里这个EXEC为什么没执行??

[复制链接]
查看11 | 回复2 | 2010-12-19 18:00:02 | 显示全部楼层 |阅读模式
declare @qz varchar(10) ,@bh varchar(10) ,@hz varchar(10),@Sname varchar(40),@Vsql varchar(800) ,@Dsql varchar(800),@Dqz varchar(50),@Dhz varchar(50),@Dzz varchar(50)
set @qz='USER00'
set @bh=5
set @hz='2009'
set @Dqz='master..xp_cmdshell'+"'"+'bcp'+'"'+'Select * from'+ "'"
set @Dzz='..JCJK'+'"'+' queryout d:\JCJK\'
set @Dhz='.txt -c -SJCQCZJ -Usa -P12345'+"'"
while @bh<10
begin
set @Sname = @qz+@bh+@hz
set @Dsql =@Dqz+@Sname+@Dzz+@qz+@bh+@Dhz
print @Sname
set @Vsql='use '+@Sname
print @Vsql
exec(@Vsql)
这条语句后面我添加了视图,但为什么是实际并没有打开新的数据库啊

回复

使用道具 举报

千问 | 2010-12-19 18:00:02 | 显示全部楼层
不是exec的问题。你先检查xp_cmdshell有没有激活,以及有没有权限去用它 ,开启它,执行下面的语句,可以得到正确的输出:declare @qz varchar(10) ,@xp varchar(20),@bh varchar(10) ,@hz varchar(10),@Sname varchar(40),@Vsql varchar(800) ,@Dsql varchar(800),@Dqz varchar(50),@Dhz varchar(50),@Dzz varchar(50) set @qz='USER00'set @bh=5set @hz='2009'set @Dqz=''''+'bcp '+'"'+'Selec
回复

使用道具 举报

千问 | 2010-12-19 18:00:02 | 显示全部楼层
在exec过程中运行了此命令,出过程后回到了原来的数据库。 set @Vsql='use '+@Snameset @Vsql=@Vsql+' create table a1(id int)';print @Vsqlexec(@Vsql)测试一下,没问题。 如果是在一个服务器上,可以用完整的路径来表示。不用use也可以、如 sele
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行