我要用SQL 语句备份数据库,数据库名student,表有S,C,SC三个。
要求1:每月1日作一次数据备份。
要求2:每季度第一天作一次数据备份。
要求3:对student数据库中的S,C,SC作恢复。
在下新手,求高手指点写详细点。

解决方案 »

  1.   

    /*******************完整备份作业*******************/
    --完整备份,每周一次
    USE Master
    GO
    declare @str varchar(100)
    set @str='D:\DBtext\jgj\DBABak\FullBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.bak'
    BACKUP DATABASE [demo] TO DISK=@str
    WITH RETAINDAYS=15,NOFORMAT,NOINIT,
    NAME=N'Demo完整备份',SKIP,NOREWIND,
    NOUNLOAD,STATS=10
    GO
    /*******************差异备份作业*******************/
    --截断日志
    USE Master
    GO
    BACKUP LOG Demo  WITH NO_LOG
    GO
    --收缩日志文件
    USE Demo
    GO
    DBCC SHRINKFILE (N'Demo_log',0,TRUNCATEONLY)
    GO
    --差异备份,每天一次
    USE Master
    GO
    declare @str varchar(100)
    set @str='D:\DBtext\jgj\DBABak\DiffBak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.diff'
    BACKUP DATABASE [Demo] TO DISK=@str
    WITH DIFFERENTIAL,RETAINDAYS=8,NOFORMAT,NOINIT,
    NAME=N'Demo差异备份',SKIP,NOREWIND,
    NOUNLOAD,STATS=10
    GO
    /******************日志备份作业*******************/
    --日志备份,每小时一次
    USE Demo
    GO
    declare @str varchar(100)
    set @str='D:\DBtext\jgj\DBABak\logbak'+replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.trn'
    BACKUP LOG [Demo] TO DISK=@str
    WITH RETAINDAYS=3,NOFORMAT,NOINIT,
    NAME=N'Demo日志备份',SKIP,NOREWIND,
    NOUNLOAD,STATS=10
    GO
    --删除过期的备份文件,每天两次
    declare @str varchar(100),@dir varchar(100),@fileName varchar(30)
    set @dir='del D:\DBtext\jgj\DBABak\'
    set @filename=left(replace(replace(replace(convert(varchar,getdate()-15,20),'-',''),' ',''),':',''),8)
    set @str=@dir+'fullbak'+@filename+'*.bak'
    exec xp_cmdshell @str
    set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)
    set @str=@dir+'diffbak'+@filename+'*.diff'
    exec xp_cmdshell @str
    set @filename=left(replace(replace(replace(convert(varchar,getdate()-8,20),'-',''),' ',''),':',''),8)
    set @str=@dir+'logbak'+@filename+'*.trn'
    exec xp_cmdshell @str参考一下
      

  2.   

    要求1:每月1日作一次数据备份。
    --> 建sql job,每月第一天执行. backup database student to disk='[目标路径\备份文件名]' with format,init
    要求2:每季度第一天作一次数据备份。
    --> 建sql job,每季第一天执行. backup database student to disk='[目标路径\备份文件名]' with format,init
    要求3:对student数据库中的S,C,SC作恢复。
    --> 需要时进行数据库恢复. restore database student from disk='[目标路径\备份文件名]' with replace