因为以前用好压,压缩程序文件,利用window的计划任务,每天自动备份到 远程的服务器上。后来windows计划任务出现了故障,就想到了用sql server的作业调度来做。
结果数据库的异地备份批处理,作业调度成功了。但是程序备份的批处理,不成功啊。手工双击这个批处理文件,是可以执行成功的,批处理文件本身没有问题。作业的脚本如下:EXECUTE  master..xp_cmdshell 'd:\备份\progbak.bat'
看作业的日志,执行成功的,并没有错误提示,但是就是没有copy过去的。
.bat里面的内容如下:d:\备份\文件1_BussAndClient.lnk
d:\备份\文件2_BussAndClient.lnk
d:\备份\文件3_BussAndClient.lnk
d:\备份\文件4_BussAndClient.lnk即使在作业中我这样写:
EXECUTE  master..xp_cmdshell 'd:\备份\文件1_BussAndClient.lnk'
也是无法执行压缩远程备份的。谢谢大家,请求大家的帮助,不知道这个是什么原因。同样类似的写法,数据库的异地备份就是可以的。

解决方案 »

  1.   

    EXECUTE master..xp_cmdshell 'copy d:\备份\progbak.bat'
      

  2.   

    to: zy112429
    谢谢您。我试验了加了copy还是不行。发现这个.bat 复制到了本机的  C:\WINDOWS\system32 目录了。文件本身没有执行。to: hexl0325
    您好。那个快捷方式,是用压缩软件生成的,可以压缩文件到异地服务器上的某个目录,并且在后面加上时间戳。 快捷方式,是可以正常执行的。
      

  3.   

    数据库备份那个批处理成功了,是有个区别,就是 里面用 xcopy 从一个机器目录复制到另外一个机器。
    而程序备份不是用copy来执行的。是这个压缩文件,可以实现压缩并且copy到指定的服务器,是在建立压缩文件的时候设置好的远程服务器的路径密码等。所以,只要这个快捷方式执行就行了。
      

  4.   

    EXECUTE master..xp_cmdshell 'd:\备份\文件1_BussAndClient.lnk'
       在ssms中直接执行这个看看输出什么错? 是不是xp_cmdshell  没有打开 ?
      

  5.   

    to: sekai2011
    谢谢您
    我在查询分析器中 执行,并没有报错,output为null ,消息中显示,所影响行数为1.但是检查异地服务器文件夹,并没有压缩过去。
    通过作业调度,也是不报错。
    xp_cmdshell  应该是打开了,因为另外一个批处理是成功的。同样是到另外一个机器。
      

  6.   

    你要模拟双击的动作啊 不然你把'd:\备份\文件1_BussAndClient.lnk'
    放到cmd中 你看看能否执行
      

  7.   

    to: tcjacky
    您好。谢谢您。
    不知道如何模拟双机的动作。
    我曾经这样写过
    master..xp_cmdshell 'cmd/c d:\备份\文件1_BussAndClient.lnk'
    也不执行的。我尝试过,直接在dos粘帖这个命令(d:\备份\文件1_BussAndClient.lnk),回车,是可以执行的  。备份成功。  
      

  8.   

    换个方式,在c盘建一个abc.txt,直接
    EXECUTE master..xp_cmdshell 'c:\abc.txt'
    看能否执行,如果能执行,在c盘上建这个文件的批处理: c:\abc.bat,里面也就是上面这句,
    再执行:
    EXECUTE master..xp_cmdshell 'c:\abc.bat'
    看能否执行.
    如能,再把这个批处理建一个快捷方式,直接拉的话,文件名应为: abc.bat.lnk
    因为你的快捷方式没有扩展名,把它更名为 abc.lnk
    再执行:
    EXECUTE master..xp_cmdshell 'c:\abc.lnk'
    看是否能执行.
    找到错的那步,再看是什么问题.
      

  9.   

     c:\abc.bat
    的内容应为
    c:\abc.txt
      

  10.   

    to: qianjin036a
    谢谢您。执行到第一步就不执行了EXECUTE master..xp_cmdshell 'c:\abc.txt'就是这句话。在查询分析器中,执行,提示‘正在执行批查询...’.
    txt里面的内容为空,处于等待状态。里面有内容   ‘d:\备份\文件1_BussAndClient.lnk'
     也是处于等待 后来就强制终止了。
    ---------------
    第二步,建立了.bat。内容是abc.txt执行。输出如下的错误。
    NULL
    C:\WINDOWS\system32>abc.txt
    'abc.txt' 不是内部或外部命令,也不是可运行的程序
    或批处理文件。
    NULL
      

  11.   

    xp_cmdshell是没有问题的。如果你是用CMD命令进行备份,那就应该用copy。如果你是通过其它软件备份,那你就应该先执行其它软件。