在SQL下建立的数据库,里面包含了几个数据表,表名: A1,B1,C1
现在想每天中午12:00定时自动备份出这些表到指定的文件夹:D:\SQLDATA\请问我应该怎么做?
1:在哪里设置?
2:怎么写命令?
3:怎么做SCHEDULE?希望知道方法的朋友帮忙解答一下,我对于SQL的使用实在是不熟,谢谢了。

解决方案 »

  1.   

    首先創建一個備份的存儲過程。可以仿照這個
    CREATE PROCEDURE sp_auto_backup--可加指定备份文件名 @vname
    --指定备份路径  @vpath
    AS
    declare    @vName   varchar(255),    --备份文件名称(完整路径)
               @vFile   varchar(255),    --备份文件名称,防止重复
               @vcmd    varchar(255),    --外部命令
       @result  int              --查找结果
    --注意备份命令不支持事务处理
    --备份分三步完成
    --创建备份目录
    --在目录中创建备份设备
    --备份数据库-- 1 --  建目录   exec @result = master..xp_cmdshell 'dir y:\hisdata_bak'   --if (@result = 0)
    --print '目录已经存在,直接备份!'
       --else
    exec master..xp_cmdshell  'md y:\hisdata_bak'       -- 2 -- 建设备
       select @vname ='y:\hisdata_bak\'+convert(varchar(8), getdate(), 112) 
       select @vfile =  convert(varchar(8), getdate(), 112) 
       select @vcmd =  'dir ' + @vname
       exec @result = master..xp_cmdshell  @vcmd  --if (@result = 0)   --可用del 命令删除
    --print '备份设备已经存在,直接备份!'
       --else
    exec master..sp_addumpdevice 'disk', @vfile,@vname-- 3 --  备份
       BACKUP DATABASE wagenHisv4 TO @vfileGO
    然後再在sql代理裡面新建一個作業。調用這個存儲過程就行了
      

  2.   

    楼上这个是写的脚本么?有没有简单点的?
    我在数据库右键菜单的“所有任务”里面看到有备份到文件,也可以选SCHEDULE,但是我设完之后再打开,这个任务就不见了。可以帮我解答一下有什么要注意的么》?
      

  3.   

    在企业管理器里也可以!右击数据库所有任务就有或新任务计划也可以
    当然CREATE PROCEDURE sp_auto_backup--可加指定备份文件名 @vname
    --指定备份路径  @vpath
    AS
    declare    @vName   varchar(255),    --备份文件名称(完整路径)
               @vFile   varchar(255),    --备份文件名称,防止重复
               @vcmd    varchar(255),    --外部命令
       @result  int              --查找结果
    --注意备份命令不支持事务处理
    --备份分三步完成
    --创建备份目录
    --在目录中创建备份设备
    --备份数据库-- 1 --  建目录   exec @result = master..xp_cmdshell 'dir y:\hisdata_bak'   --if (@result = 0)
    --print '目录已经存在,直接备份!'
       --else
    exec master..xp_cmdshell  'md y:\hisdata_bak'       -- 2 -- 建设备
       select @vname ='y:\hisdata_bak\'+convert(varchar(8), getdate(), 112) 
       select @vfile =  convert(varchar(8), getdate(), 112) 
       select @vcmd =  'dir ' + @vname
       exec @result = master..xp_cmdshell  @vcmd  --if (@result = 0)   --可用del 命令删除
    --print '备份设备已经存在,直接备份!'
       --else
    exec master..sp_addumpdevice 'disk', @vfile,@vname-- 3 --  备份
       BACKUP DATABASE wagenHisv4 TO @vfileGO
      

  4.   

    qys2000(银升) ( ) 信誉:100  2007-07-31 11:23:38  得分: 0  
     
     
       搞得这么烦
      
     
    你的不煩。干嗎復制我的代碼。你說的那個所有任務不是自動備份的。那只是一次性備份。就是人操作一次就備份一次。你還是多看點書比較好
      

  5.   

    TO:LZ
    好象在VB版里见过你哦
      

  6.   

    CREATE PROCEDURE BACKUP_PROCEDURE
    AS
    BEGIN
      DECLARE @Str VARCHAR(255)
      SET @Str = 'E:\D:\SQLDATA\' + 'databasename' + CONVERT(VARCHAR(2), DATEPART(WEEKDAY, GETDATE())) + '.BAK'
      BACKUP DATABASE databasename TO DISK = @Str WITH INIT
      EXECUTE databasename..SP_UPDATESTATS
    END
    GO
    然后用作业来实现
      

  7.   

    恩,我一直在VB版的,最近做了个数据库应用,程序全部搞定了,数据库备份却晕了,平时不大玩这个东西,所以跑来请教了。谢谢楼上的几位朋友,我用的是SQL2000,我在数据库的右键菜单“所有任务”中建立了一个每天备份的任务,但是过后再次打开这个任务却发现任务的"SCHEDULE"选项被取消了,但是我建立的时候明明是点上的,反复几次都会自动取消,不知道是否SQL2000的一个BUG.因为备份的时间是在半夜,所以明天才能知道是否真的生效。
    到时见分晓。谢谢大家了。
      

  8.   

    哈哈,果然生效了,忽然多出来4个一样大小的备份文件,这些可麻烦了,我怎么才能把以前做的那些备份SCHEDULE去掉啊?或者说,我在哪里才能看到我当前对一个数据库做了那些备份工作啊?
      

  9.   

    在job里找下,在backup文件夹中找一下