如题, 现在需要每月定时将表内查询结果输出到指定文件夹,生成一个csv文件, 做备份用.declare @sql nvarchar(256);
declare @filename nvarchar(100); 
set @filename='f:\MonthlyReports\'+convert(char(8),getdate(),112)+'.csv';
set @sql = 'bcp "select top 100 percent 块料识别号,尺寸,重量,数量,入炉角,出炉角,convert(varchar,入炉时间,120) as "入炉时间",convert(varchar,出炉时间,120) as "出炉时间" from CC_asdf_13_09_18_15_23_15.dbo.materialDetail 
where datepart(mm,入炉时间) between datepart(mm,getdate())-1 and datepart(mm,getdate()) order by 入炉时间 desc" out @filename -S"KIDD\WINCC" -U"sa" -P"wincc"';
exec master..xp_cmdshell @sql;
可是bcp之后的output都是bcp的功能介绍,无任何返回结果,望各位大侠帮忙查下是什么原因.结果如下:usage: bcp {dbtable | query} {in | out | queryout | format} datafile
  [-m maxerrors]            [-f formatfile]          [-e errfile]
  [-F firstrow]             [-L lastrow]             [-b batchsize]
  [-n native type]          [-c character type]      [-w wide character type]
  [-N keep non-text native] [-V file format version] [-q quoted identifier]
  [-C code page specifier]  [-t field terminator]    [-r row terminator]
  [-i inputfile]            [-o outfile]             [-a packetsize]
  [-S server name]          [-U username]            [-P password]
  [-T trusted connection]   [-v version]             [-R regional enable]
  [-k keep null values]     [-E keep identity values]
  [-h "load hints"]
NULL

解决方案 »

  1.   

    bcp "SELECT * FROM AdventureWorks2012.Person.Person WHERE FirstName='Jarrod' AND LastName='Rana' "  queryout "Jarrod Rana.dat" -T -c这是例子,你自己改改吧。另外你那个@filename应该改成'+''''+@filename+''''+'
      

  2.   


    @filename的引入我重新改过了,不过输出结果还是一样.
      

  3.   


    @filename的引入我重新改过了,不过输出结果还是一样.关键现在就是不知道报的是什么错, 在目标文件夹也找不到输出job生成的文件.
      

  4.   

    exec master..xp_cmdshell 'bcp "select * from CC_asdf_13_09_18_15_23_15.dbo.materialDetail" queryout "f:\MonthlyReports\3.csv" -c -S"KIDD\WINCC" -U"sa" -P"wincc"';这种最直接的方法就能生成文件.
    可只要加上where条件或者是用@filename拼接的指定路径就还会出现刚才的问题,也没有报错, 能麻烦告诉我一下是什么原因造成的这种问题么?
      

  5.   

    declare @strSQL nvarchar(1024)
    set @strSQL='bcp "SELECT applicationID,Category FROM test.dbo.temtable" queryout C:\Temp\DBA_date\'+@filename+' -c -T -t","'
    --print @strSQL
    EXEC master..xp_cmdshell @strSQL这是我在公司部署的脚本,你改一下试试
      

  6.   


    注意一下双引号,问题解决了,谢了!!
    不过还是想知道到底是什么原因造成的这个output~
      

  7.   

    搞笑一点来说,sqlserver都懒得跟你解释了,直接告诉你语法
      

  8.   


    呵呵..直接说我小白就是了,本来sqlserver就是小白,没办法.我也只是想搞懂到底是什么原因造成的,以后不会再出现这种问题,呵呵,既然你懒得解释,那就算了.
      

  9.   

    但是很多东西都是有一个“模版”的,比如你这次弄好了,下次如果需要导出其他表的信息,你直接改select语句就可以了。甚至把每次弄出来的东西尽可能扩展,比如用变量来存放一些可能会变化的信息,你下次只需要改变量就可以了。这些就是经验
      

  10.   

    微软的命令行,发现你的语法不对,就直接显示help的信息啦。在设置@filename时,前后分别加多一个双引号。
      

  11.   

    您这个问题解决了吗? 我也遇到了类似的问题,我写的命令在我的电脑上sqlserver2000下能执行,到朋友电脑上sql2003下执行不了,执行结果也是bcp的功能介绍
    求教
      

  12.   

    http://zhidao.baidu.com/link?url=Z-gAsox2koTHonwPTiBIt4jndVBUxzt-b1X3wl1WBCBCPqiqe_jZ8VFLsurj-jfkEnl3c67Bu-8oQWtBcIIR74oJhYCsG7rFiMqvclJY0Qi
    这里有一个解答,好像是这个问题
    说是 bcp 后面不能有换行