T-SQL语句实现数据库备份与还原功能(四)

应用案例2

  生产数据核心库:PRODUCE

  备份方案如下:

  1.设置三个作业,分别对PRODUCE库进行每日备份,每周备份,每月备份

  2.新建三个新库,分别命名为:每日备份,每周备份,每月备份

  3.建立三个作业,分别把三个备份库还原到以上的三个新库。

  目的:当用户在produce库中有任何的数据丢失时,均可以从上面的三个备份库中导入相应的TABLE数据。

declare @sql varchar(8000)


  --1.建立每月备份和生成月备份数据库的作业,每月每1天下午16:40分进行:

set @sql=’ 
  declare @path nvarchar(260),@fname nvarchar(100) 
  set @fname=’’PRODUCE_’’+convert(varchar(10),getdate(),112)+’’_m.bak’’ 
  set @path=dbo.f_getdbpath(null)+@fname
     --备份
  exec p_backupdb @dbname=’’PRODUCE’’,@bkfname=@fname
  --根据备份生成每月新库
  exec p_RestoreDb @bkfile=@path,@dbname=’’PRODUCE_月’’
  --为周数据库恢复准备基础数据库
  exec p_RestoreDb @bkfile=@path,@dbname=’’PRODUCE_周’’,@retype=’’DBNOR’’
  --为日数据库恢复准备基础数据库
  exec p_RestoreDb @bkfile=@path,@dbname=’’PRODUCE_日’’,@retype=’’DBNOR’’
  exec p_createjob @jobname=’每月备份’,@sql,@freqtype=’month’,@time=164000


  --2.建立每周差异备份和生成周备份数据库的作业,每周日下午17:00分进行:


set @sql=’ 
  declare @path nvarchar(260),@fname nvarchar(100) 
  set @fname=’’PRODUCE_’’+convert(varchar(10),getdate(),112)+’’_w.bak’’ 
  set @path=dbo.f_getdbpath(null)+@fname 
      --差异备份 
  exec p_backupdb @dbname=’’PRODUCE’’,@bkfname=@fname,@bktype=’’DF’’
  --差异恢复周数据库
  exec p_backupdb @bkfile=@path,@dbname=’’PRODUCE_周’’,@retype=’’DF’’
  ’
  exec p_createjob @jobname=’每周差异备份’,@sql,@freqtype=’week’,@time=170000
  


     --3.建立每日日志备份和生成日备份数据库的作业,每周日下午17:15分进行:


set @sql=’  
  declare @path nvarchar(260),@fname nvarchar(100)  
  set @fname=’’PRODUCE_’’+convert(varchar(10),getdate(),112)+’’_l.bak’’  
  set @path=dbo.f_getdbpath(null)+@fname 
  --日志备份 
  exec p_backupdb @dbname=’’PRODUCE’’,@bkfname=@fname,@bktype=’’LOG’’ 
  --日志恢复日数据库 
  exec p_backupdb @bkfile=@path,@dbname=’’PRODUCE_日’’,@retype=’’LOG’’ 
  ’ 
  exec p_createjob @jobname=’每周差异备份’,@sql,@freqtype=’day’,@time=171500
set @sql=’ 
  declare @path nvarchar(260),@fname nvarchar(100) 
  set @fname=’’PRODUCE_’’+convert(varchar(10),getdate(),112)+’’_l.bak’’ 
  set @path=dbo.f_getdbpath(null)+@fname  --日志备份 
  exec p_backupdb @dbname=’’PRODUCE’’,@bkfname=@fname,@bktype=’’LOG’’
  --日志恢复日数据库
  exec p_backupdb @bkfile=@path,@dbname=’’PRODUCE_日’’,@retype=’’LOG’’
  ’
  exec p_createjob @jobname=’每周差异备份’,@sql,@freqtype=’day’,@time=171500

posted @ 2008-07-24 17:14  浪子の无悔  阅读(174)  评论(0编辑  收藏  举报