在查询分析器中执行
exec master.dbo.xp_cmdshell 'cd C:\Program Files\Microsoft SQL Server\80\Tools\Binn'
exec master.dbo.xp_cmdshell 'bcp ebms.dbo.ATMTXNJNLHIS_LATEST in c:\atmtxnjnl.mix.del.20090708.new -c -t","  -F1 -Slocalhost -Usa -Pqiusongze'
每条执行语句给我的output为
NULL
c:\WINDOWS\system32>doskey ls=dir 
NULL
c:\WINDOWS\system32>doskey l=dir 
NULL
c:\WINDOWS\system32>doskey pwd=cd 
NULL
c:\WINDOWS\system32>doskey vi=edit 
NULL
c:\WINDOWS\system32>cls 
NULL
c:\WINDOWS\system32>doskey ls=dir 
NULL
c:\WINDOWS\system32>doskey l=dir 
NULL
c:\WINDOWS\system32>doskey pwd=cd 
NULL
c:\WINDOWS\system32>doskey vi=edit 
NULL
c:\WINDOWS\system32>cls
'bcp' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
NULL
但是在dos窗口中 能正确执行
C:\Program Files\Microsoft SQL Server\80\Tools\Binn>bcp ebms.dbo.ATMTXNJNLHIS_LA
TEST in "c:\atmtxnjnl.mix.del.20090708.new" -c -t","  -F1 -Slocalhost -Usa -Pqiu
songze
 
开始复制...
 
已复制了 6 行。
数据包的大小(字节): 4096
时钟时间(毫秒): 共    531

解决方案 »

  1.   

    好像少了引号exec master.dbo.xp_cmdshell 'bcp ebms.dbo.ATMTXNJNLHIS_LATEST in "c:\atmtxnjnl.mix.del.20090708.new" -c -t","  -F1 -Slocalhost -Usa -Pqiusongze' 
      

  2.   

    是这么写吗?在查询分析器里还是不行啊
    exec master.dbo.xp_cmdshell 'cd C:\Program Files\Microsoft SQL Server\80\Tools\Binn bcp ebms.dbo.ATMTXNJNLHIS_LATEST in "c:\atmtxnjnl.mix.del.20090708.new" -c -t","  -F1 -Slocalhost -Usa -Pqiusongze'
    NULL
    c:\WINDOWS\system32>doskey ls=dir 
    NULL
    c:\WINDOWS\system32>doskey l=dir 
    NULL
    c:\WINDOWS\system32>doskey pwd=cd 
    NULL
    c:\WINDOWS\system32>doskey vi=edit 
    NULL
    c:\WINDOWS\system32>cls
    文件名、目录名或卷标语法不正确。
    NULL
      

  3.   

    exec master.dbo.xp_cmdshell 'cd "C:\Program Files\Microsoft SQL Server\80\Tools\Binn" && bcp ebms.dbo.ATMTXNJNLHIS_LATEST in "c:\atmtxnjnl.mix.del.20090708.new" -c -t","  -F1 -Slocalhost -Usa -Pqiusongze' 
      

  4.   

    exec master.dbo.xp_cmdshell 'cd "C:\Program Files\Microsoft SQL Server\80\Tools\Binn" && bcp ebms.dbo.ATMTXNJNLHIS_LATEST in "c:\atmtxnjnl.mix.del.20090708.new" -c -t","  -F1 -Slocalhost -Usa -Pqiusongze' 
    这个已经好了,现在问题是,我想传如参数用变量把20090708换掉,应该如何写?谢谢大哥啊,
      

  5.   

    我现在想通过程序调用存储过程传参先倒入库然后再查询,存储过程是这么写的
    CREATE PROCEDURE his_query  @start_dt datetime ,@end_dt datetime
    AS
    set quoted_identifier off
    --删除
    delete from  ATMTXNJNLHIS_LATEST
     
    --//声明临时存放CityID的变量
     
    declare @tmp datetime
    set @tmp=@end_dt
    while(DATEDIFF(day, @start_dt, @tmp)!=0)
      begin
     exec master.dbo.xp_cmdshell 'cd "C:\Program Files\Microsoft SQL Server\80\Tools\Binn" && bcp ebms.dbo.ATMTXNJNLHIS_LATEST in "c:\atmtxnjnl.mix.del."+CONVERT(varchar(10),@tmp,112)+".new" -c -t","  -F1 -Slocalhost -Usa -Pqiusongze'
      set @tmp=dateadd(day,-1,@end_dt)
      end
    GO