复制文件还是单独用windows的计划任务完成吧.

解决方案 »

  1.   

    在一个批处理文件如何创建一个可自动变化的路径,这个的可能性不太大,在SQL中用xp_cmdshell 创建倒可以.一般,调用批处理的话,最好用windows的计划任务进行处理.如果是SQL的备份,建议采用纯SQL的处理方式.
      

  2.   

    参考我的贴子:数据库备份/恢复方案:http://www.csdn.net/Develop/Read_Article.asp?Id=22988
      

  3.   

    set @dir2=@dir+'\'+@currdate
    你不是已经实现了每天一个路径了吗?set @sql='BACKUP DATABASE ['+@dbname+'] TO  DISK = N'''+@dir+''' WITH  INIT ,  NOUNLOAD ,  NOSKIP ,  STATS = 10,  NOFORMAT'--备份到数据库文件所在目录
    但为什么这里用@dir而不是@dir2呢?
      

  4.   

    pbsql(风云):你说的没错,第一种是实现了每天一个路径,
    我所说的是第二种备份文件的方法没有实现每天一个新路径。另创建目录时没必要判断,因为一天一个就行了,有多个自动覆盖。 zjcxc(邹建) :备份数据库文件时,我觉得还是在SQL中备份的好,便于管理,因为它还是属于SQL数据库文件的备份嘛,而且windows调度还要知道服务器的windows密码。但不知怎么在SQL的作用中调用上面的批处理就不能启动SQLServerAgent服务器了,这样每天还需要手工启动该服务器,没有达到自动备份的目的。
      

  5.   

    我是赞成备份数据库文件时,在SQL中备份啊只不过我觉得,你没有必要再搞些批处理来做吧???SQL中设置作业来定时处理东西,本来就要求SQL Agent服务是开着的,不然作业就罢工,所以你搞个批处理来停止SQL 代理服务及SQL服务,然后再启用,这个肯定行不通,SQL服务都停了,谁来调度执行后面的处理?所以我上面有说,建议全部用SQL来处理你的备份
      

  6.   

    zjcxc(邹建) :你可能还没明白我的意思,
    我要备份的是数据库文件,备份数据库文件时,数据库必须先关闭,在SQL中调用批处理后并不需要SQL来控制它。我已经试过比较小的数据库文件备份时一切都OK的,但数据库一大到250M以后SQLServerAgent就不能被SQL调用的那个批处理所启动了!
      

  7.   

    不知道是我误导你,不是被你误导.不知道你为什么是备份数据文件?1.如果只是备份数据文件的话,并不安全,事实上本论坛也出现过不少人说只备份了数据文件
      最后无法附加的情况,导致数据丢失2.如果只是备份数据文件的话,你觉得与SQL有多大的关系? 停止了SQL服务,数据文件就是
      普通的文件而已3.当然,上述可能与要解决的实际无关4.你的备份的存储过程好像没有涉及到备份数据文件,你只是单独写了一个备份数据文件
      的批处理,而这个批处理也与备份的存储好像没有什么关系吧?5.我用如下的内容的bat文件测试,确实如你所说,SQL是被停止后再启动了.
    net stop MSSQLServer
    net start MSSQLServer--在查询分析器中的测试语句为:
    exec master..xp_cmdshell 'c:\a.bat'
    select 1--测试的结果:
    exec master..xp_cmdshell 'c:\a.bat'
    select 1从结果看,select 1并没有被执行,但如果我逐条选中执行的话,则第2条可以被执行
    所以由此看来,用SQL的作业来调用批处理进行处理还是会出问题6.sql去做调度的话,也不是没有权限问题,首先,允许xp_cmdshell命令,本身就是一个
      不安全的因素,其次,它要求系统管理员权限7.sql代理的权限是由sql代理服务的启动帐户决定它对windows的操作权限的8.所以最终的结论,批处理的备份部分,还是应该由windows的计划任务去完成