MSSQL數據庫備份

1 MSSQL 數據庫的定期自動備份計劃  

通過企業管理器 設置數據庫的定期自動備份計劃。
1
、打開企業管 理器,雙擊打開你的服務器
2
、然後點上面 菜單中的工具 --> 選擇數據庫維護計劃器
3
、下一步選擇要進行自動備份的數據 --> 下一步更新數據優化信息,這裏一般不用做選擇 --> 下一步檢查數據完整性,也一般不選擇
4
、下一步指定數據庫維護計劃,默認的是 1 周備份一次,點擊更改選擇備份的日期及時間點 確定 ,
5
、下一步指定 備份的磁盤目錄,選擇指定目錄,然後選擇刪除早於多少天前的備份,選擇一個星期刪除一次備份 , 具體備份看你的要求,備份文件擴展名默認的是 BAK
6
、下一步指定事務日誌備份計劃,看你的需要做選擇 --> 下一步要生成的報表,一般不做選擇 --> 下一步維護計劃歷史記錄,最好用默認的選項 --> 下一步完成
7
、完成後系統很可能會提示 Sql Server Agent 服務未啓動,先點確定完成計劃設定,然後找到桌面最右邊狀態欄中的 SQL 綠色圖標,雙擊點開,在服務中選擇 Sql Server Agent ,然後點擊運行箭頭,選上下方的當啓動 OS 時自動啓動服務
8
、可以設置啓動啓動 sql server Agent: 運行 Services.msc ,設置 sqlserverAgent 爲自動啓動。

2 /*-- 數據庫   完全 + 增量 ( 差異 ) 備份 / 恢復   示例 --*/  
 
-- 清除環境  
  exec   master..xp_cmdshell   'del   c:/test.bak'  
  if   exists(select   *   from   master..sysdatabases   where   name='test')  
  drop   database   test  
  go  
   
  --
創建數據庫  
  create   database   test  
  go  
   
  --
打開創建的數據  
  use   test  
  go  
   
  --
創建測試表  
  create   table   t(a   int)  
   
  --
切換回 master 數據庫  
  use   master  
  go  
   
  --
插入數據 1  
  insert   into   test..t   select   1  
  go  
   
  --
然後進行一次 完整備份  
  backup   database   test   to   disk='c:/test.bak'  
  go  
   
  --
插入數據 2  
  insert   into   test..t   select   2  
  go  
   
  --
再進行一次完整備份  
  backup   database   test   to   disk='c:/test.bak'  
  go  
   
  --
插入 3,4  
  insert   into   test..t   select   3  
  insert   into   test..t   select   4  
  go  
   
  --
差異備份 :  
  backup   database   test   to   disk='c:/test.bak'   with   differential  
   
  --
刪除數據庫  
  drop   database   test  
   
  --
還原數據庫和差異數據庫備份  
  restore   database   test   from   disk='c:/test.bak'   with   file=2,norecovery  
  restore   database   test   from   disk='c:/test.bak'   with   file=3,recovery  
   
  --
顯示恢復後的 數據
 
  select   *   from   test..t

 

-- 要實現自動備份的話 , 只需要創建一個作業 , 並將上述備份語句寫入作業的執行語句中  
 -- 並設置好作業的執行時間即可 .  
 
企業管理器
 
  --
管理
 
  --SQL   Server
代理
 
  --
右鍵作業
 
  --
新建作業
 
  --"
常規 " 項中輸入作業名稱
 
  --"
步驟 "
 
  --
新建
 
  --"
步驟名 " 中輸入步驟名
 
  --"
類型 " 中選擇 "Transact-SQL   腳本
(TSQL)"  
  --"
數據庫 " 選擇執行命令的數據庫
 
  --"
命令 " 中輸入要執行的語句
 
  --
確定
 
  --"
調度 "
 
  --
新建調度
 
  --"
名稱 " 中輸入調度名稱
 
  --"
調度類型 " 中選擇 你的作業執行安排
 
  --
如果選擇 " 反覆出現
"  
  --
" 更改 " 來設置你的時間安排  


 
然後將 SQL   Agent 服務啓動 , 並設置爲自動啓動 , 否則你 的作業不會被執行

 

-- 也可以直接用 SQL 的維 護計劃來自動備份數據庫 , 但這種維護計劃只提供了完全備份與日誌備份兩種  
   
 
企業管理器
 
      --
管理
 
      --
右鍵數據庫維護計劃
 
      --
新建維護計劃
 
      --<
下一步
>  
      --
選擇你要備份的數據庫
 
      --<
下一步 > 直到 " 指定數據庫備份計劃 " 這項
 
      --
指定存儲備份文件的位置 , 這裏根據需要選擇備分到磁帶還是磁盤
 
      --
單擊調度後面的 " 更改 " 按紐
 
      --
定義你的數據備份計劃的時間安排 , 完成後確定
 
      --<
下一步
>  
      --
這裏可以設置備份文件的保留時間和備文件的擴展名
 
      --<
下一步
>  
      --
選擇是否做日誌備份計劃
 
      --<
下一步 > 直到完成 .

3 、有關 MS SQL 備份還原及計劃任務的腳本

a /*-- 備份數據庫 --*/   


/*--
調用示例    
  --
備份當前數據庫    
  exec   p_backupdb   @bkpath='c:/',@bkfname='db_/DATE/_db.bak'   
  --
差異備份當前數據庫    
  exec   p_backupdb   @bkpath='c:/',@bkfname='db_/DATE/_df.bak',@bktype='DF'   
  --
備份當前數據庫日誌    
  exec   p_backupdb   @bkpath='c:/',@bkfname='db_/DATE/_log.bak',@bktype='LOG'   
--*/   


  if exists(select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[p_backupdb]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)   
  drop   procedure   [dbo].[p_backupdb]   
  GO   
    
  create   proc   p_backupdb   
  @dbname   sysname='', --
要備份的數據庫名稱 , 不指定則備份當前數據庫    
  @bkpath   nvarchar(260)='', --
備份文件的存放目錄 , 不指定 則使用 SQL 默認的備份目錄
   
  @bkfname   nvarchar(260)='', --
備份文件名 , 文件名 中可以用 /DBNAME/ 代表數據庫名 ,/DATE/ 代表日期 ,/TIME/ 代表時間    
  @bktype   nvarchar(10)='DB', --
備份類型 :'DB' 備 份數據庫 ,'DF'    差異備份 ,'LOG'    日誌備份    
  @appendfile   bit=1 --
追加 / 覆蓋備份文件    
  as   
  declare   @sql   varchar(8000)   
  if   isnull(@dbname,'')=''   set   @dbname=db_name()   
  if   isnull(@bkpath,'')=''   set   @bkpath=dbo.f_getdbpath(null)   
  if   isnull(@bkfname,'')=''   set   @bkfname='/DBNAME/_/DATE/_/TIME/.BAK'   
  set   @bkfname=replace(replace(replace(@bkfname,'/DBNAME/',@dbname)   
  ,'/DATE/',convert(varchar,getdate(),112))   
  ,'/TIME/',replace(convert(varchar,getdate(),108),':',''))   
  set   @sql='backup   '+case   @bktype   when   'LOG'   then   'log   '   else   'database   '   end   +@dbname   
  +'   to   disk='''+@bkpath+@bkfname   
  +'''   with   '+case   @bktype   when   'DF'   then   'DIFFERENTIAL,'   else   ''   end   
  +case   @appendfile   when   1   then   'NOINIT'   else   'INIT'   end   
  print   @sql   
  exec(@sql)   
  go   

    
  ----------------------------------------------------------------------   
b
  /*-- 恢復數據庫 --*/   


  /*--
調用示例    
  --
完整恢復數據庫    
  exec   p_RestoreDb   @bkfile='c:/db_20031015_db.bak',@dbname='db'   
  --
差異備份恢復    
  exec   p_RestoreDb   @bkfile='c:/db_20031015_db.bak',@dbname='db',@retype='DBNOR'   
  exec   p_backupdb   @bkfile='c:/db_20031015_df.bak',@dbname='db',@retype='DF'   
  --
日誌備份恢復    
  exec   p_RestoreDb   @bkfile='c:/db_20031015_db.bak',@dbname='db',@retype='DBNOR'   
  exec   p_backupdb   @bkfile='c:/db_20031015_log.bak',@dbname='db',@retype='LOG'   
  --*/   
    


  if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[p_RestoreDb]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)   
  drop   procedure   [dbo].[p_RestoreDb]   
  GO   
    
  create   proc   p_RestoreDb   
  @bkfile   nvarchar(1000), --
定義要恢復的備份文件名    
  @dbname   sysname='',         --
定義恢復後的數據庫名 , 默認爲 備份的文件名    
  @dbpath   nvarchar(260)='', --
恢復後的數據庫存放目錄 , 不指定 則爲 SQL 的默認數據目錄    
  @retype   nvarchar(10)='DB', --
恢復類型 :'DB' 完 事恢復數據庫 ,'DBNOR'    爲差異恢復 , 日誌恢 復進行完整恢復 ,'DF'    差異備份的恢復 ,'LOG'    日誌恢復    
  @filenumber   int=1, --
恢復的文件號    
  @overexist   bit=1,             --
是否覆蓋已經存在的數據庫 , @retype    
  @killuser   bit=1       --
是否關閉用戶使用進程 , @overexist=1 時有效    
  as   
  declare   @sql   varchar(8000)   
    
  --
得到恢復後的數據庫名    
  if   isnull(@dbname,'')=''   
  select   @sql=reverse(@bkfile)   
  ,@sql=case   when   charindex('.',@sql)=0   then   @sql   
  else   substring(@sql,charindex('.',@sql)+1,1000)   end   
  ,@sql=case   when   charindex('/',@sql)=0   then   @sql   
  else   left(@sql,charindex('/',@sql)-1)   end   
  ,@dbname=reverse(@sql)   
    
  --
得到恢復後的數據庫存放目錄    
  if   isnull(@dbpath,'')=''   set   @dbpath=dbo.f_getdbpath('')   
    
  --
生成數據庫恢復語句    
  set   @sql='restore '+case   @retype   when   'LOG'   then   'log   '   else   'database   '   end+@dbname   
  +'   from   disk='''+@bkfile+''''   
  +'   with   file='+cast(@filenumber   as   varchar)   
  +case   when   @overexist=1   and   @retype   in('DB','DBNOR')   then   ',replace'   else   ''   end   
  +case   @retype   when   'DBNOR'   then   ',NORECOVERY'   else   ',RECOVERY'   end   
  print   @sql   
  --
添加移動邏輯文件的處理    
  if   @retype='DB'   or   @retype='DBNOR'   
  begin   
  --
從備份文件中獲取邏輯文件名    
  declare   @lfn   nvarchar(128),@tp   char(1),@i   int   
    
  --
創建臨時表 , 保存獲 取的信息    
  create   table   #tb(ln   nvarchar(128),pn   nvarchar(260),tp   char(1),fgn   nvarchar(128),sz   numeric(20,0),Msz   numeric(20,0))   
  --
從備份文件中獲取信息    
  insert   into   #tb   exec('restore   filelistonly   from   disk='''+@bkfile+'''')   
  declare   #f   cursor   for   select   ln,tp   from   #tb   
  open   #f   
  fetch   next   from   #f   into   @lfn,@tp   
  set   @i=0   
  while   @@fetch_status=0   
  begin   
  select   @sql=@sql+',move   '''+@lfn+'''   to   '''+@dbpath+@dbname+cast(@i   as   varchar)   
  +case   @tp   when   'D'   then   '.mdf'''   else   '.ldf'''   end   
  ,@i=@i+1   
  fetch   next   from   #f   into   @lfn,@tp   
  end   
  close   #f   
  deallocate   #f   
  end   
    
  --
關閉用戶進程處理    
  if   @overexist=1   and   @killuser=1   
  begin   
  declare   @spid   varchar(20)   
  declare   #spid   cursor   for   
  select   spid=cast(spid   as   varchar(20))   from   master..sysprocesses   where   dbid=db_id(@dbname)   
  open   #spid   
  fetch   next   from   #spid   into   @spid   
  while   @@fetch_status=0   
  begin       
  exec('kill   '+@spid)   
  fetch   next   from   #spid   into   @spid   
  end       
  close   #spid   
  deallocate   #spid   
  end   
    
  --
恢復數據庫    
  exec(@sql)   
  go 

c
/*-- 創建作業  --*/   
    
  /*--
調用示例    
  --
每月執行的作業    
  exec   p_createjob   @jobname='mm',@sql='select   *   from   syscolumns',@freqtype='month'   
  --
每週執行的作業    
  exec   p_createjob   @jobname='ww',@sql='select   *   from   syscolumns',@freqtype='week'   
  --
每日執行的作業    
  exec   p_createjob   @jobname='a',@sql='select   *   from   syscolumns'   
  --
每日執行的作業 , 每天隔 4 小時重複的作業    
  exec   p_createjob   @jobname='b',@sql='select   *   from   syscolumns',@fsinterval=4   
  --*/   


  if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[p_createjob]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)   
  drop   procedure   [dbo].[p_createjob]   
  GO   
    
  create   proc   p_createjob   
  @jobname   varchar(100), --
作業名稱    
  @sql   varchar(8000), --
要執行的命令    
  @dbname   sysname='', --
默認爲當前的數據庫名    
  @freqtype   varchar(6)='day', --
時間週期 ,month    ,week    ,day       
  @fsinterval   int=1, --
相對於每日的重複次數    
  @time   int=170000 --
開始執行時間 , 對於重 復執行的作業 , 將從 0 點到 23:59    
  as   
  if   isnull(@dbname,'')=''   set   @dbname=db_name()   
    
  --
創建作業    
  exec   msdb..sp_add_job   @job_name=@jobname   
    
  --
創建作業步驟    
  exec   msdb..sp_add_jobstep   @job_name=@jobname,   
  @step_name   =   '
數據處理 ',   
  @subsystem   =   'TSQL',   
  @database_name=@dbname,   
  @command   =   @sql,   
  @retry_attempts   =   5,   --
重試次數    
  @retry_interval   =   5     --
重試間隔    
    
  --
創建調度    
  declare   @ftype   int,@fstype   int,@ffactor   int   
  select   @ftype=case   @freqtype   when   'day'   then   4   
  when   'week'   then   8   
  when   'month'   then   16   end   
  ,@fstype=case   @fsinterval   when   1   then   0   else   8   end   
  if   @fsinterval<>1   set   @time=0   
  set   @ffactor=case   @freqtype   when   'day'   then   0   else   1   end   
    
  EXEC   msdb..sp_add_jobschedule   @job_name=@jobname,     
  @name   =   '
時間安排 ',   
  @freq_type=@ftype   ,   --
每天 ,8    每週 ,16    每月    
  @freq_interval=1, --
重複執行次數    
  @freq_subday_type=@fstype, --
是否重複執行    
  @freq_subday_interval=@fsinterval,   --
重複週期    
  @freq_recurrence_factor=@ffactor,   
  @active_start_time=@time     --
下午 17:00:00 分執行    
  go   
    
  /*-----------------------------------------------------------------------   
d
   知識點 :    備份 / 恢復語句的用法 , 作業的創建    
  -------------------------------------------------------------------------*/   

  
/*--
應用案例 -- 備 份方案 :   
  
完整備份(每個星期 天一次) + 差異備份(每天備份一次) + 日誌備 份(每 2 小時備份一次)    
  
調用上面的存儲過程來實現    
  --*/   
    
  declare   @sql   varchar(8000)   
  --
完整備份(每個星期天一次)    
  set   @sql='exec   p_backupdb   @dbname=''
要備份的數據庫名 '''   
  exec   p_createjob   @jobname='
每週備份 ',@sql,@freqtype='week'   
    
  --
差異備份(每天備份一次)    
  set   @sql='exec   p_backupdb   @dbname=''
要備份的數據庫名 '',@bktype='DF''   
  exec   p_createjob   @jobname='
每天差異備份 ',@sql,@freqtype='day'   
    
  --
日誌備份(每 2 小時備 份一次)    
  set   @sql='exec   p_backupdb   @dbname=''
要備份的數據庫名 '',@bktype='LOG''   
  exec   p_createjob   @jobname='
2 小時日誌備份 ',@sql,@freqtype='day',@fsinterval=2   
  
 /*--
得到數據庫的文件目錄    
  @dbname   
指定要取得目錄的數據庫名    
  
如果指定的數據不存在 , 返回安裝 SQL 時設置的默認數據目錄    
  
如果指定 NULL, 則返回默認的 SQL 備份目錄名    
  --*/   

    
  /*--
調用示例    
  select   
數據庫文件目錄 =dbo.f_getdbpath('tempdb')   
  ,[
默認 SQL   SERVER 數據目錄 ]=dbo.f_getdbpath('')   
  ,[
默認 SQL   SERVER 備份目錄 ]=dbo.f_getdbpath(null)   
  --*/   
  if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[f_getdbpath]')   and   xtype   in   (N'FN',   N'IF',   N'TF'))   
  drop   function   [dbo].[f_getdbpath]   
  GO   
    
  create   function   f_getdbpath(@dbname   sysname)   
  returns   nvarchar(260)   
  as     
  begin   
  declare   @re   nvarchar(260)   
  if   @dbname   is   null   or   db_id(@dbname)   is   null   
  select   @re=rtrim(reverse(filename))   from   master..sysdatabases   where   name='master'   
  else   
  select   @re=rtrim(reverse(filename))   from   master..sysdatabases   where   name=@dbname   
    
  if   @dbname   is   null   
  set   @re=reverse(substring(@re,charindex('/',@re)+5,260))+'BACKUP'   
  else   
  set   @re=reverse(substring(@re,charindex('/',@re),260))   
  return(@re)   
  end   
  go   

 -------------------------------------------------------------------------------   
  --/*--
得到數據庫的文件目錄 :f_getdbpath   
  /*--
調用示例    
  select   
數據庫文件目錄 =dbo.f_getdbpath('tempdb')   
  ,[
默認 SQL   SERVER 數據目錄 ]=dbo.f_getdbpath('')   
  ,[
默認 SQL   SERVER 備份目錄 ]=dbo.f_getdbpath(null)   
  --*/   
  -------------------------------------------------------------------------------   
    
  --/*--
備份數據庫 :p_backupdb   
  --/*--
調用示例    
  --
備份當前數據庫    
  exec   p_backupdb   @bkpath='c:/',@bkfname='db_/DATE/_db.bak'   
  --
差異備份當前數據庫    
  exec   p_backupdb   @bkpath='c:/',@bkfname='db_/DATE/_df.bak',@bktype='DF'   
  --
備份當前數據庫日誌    
  exec   p_backupdb   @bkpath='c:/',@bkfname='db_/DATE/_log.bak',@bktype='LOG'   
  --*/   
  /*--
參數說明    
  @dbname   sysname='', --
要備份的數據庫名稱 , 不指定 則備份當前數據庫    
  @bkpath   nvarchar(260)='', --
備份文件的存放目錄 , 不指定 則使用 SQL 默認的備份目錄    
  @bkfname   nvarchar(260)='', --
備份文件名 , 文件名 中可以用 /DBNAME/ 代表數據庫名 ,/DATE/ 代表日期 ,/TIME/ 代表時間    
  @bktype   nvarchar(10)='DB', --
備份類型 :'DB' 備 份數據庫 ,'DF'    差異備份 ,'LOG'    日誌備份    
  @appendfile   bit=1 --
追加 / 覆蓋備份文件    
  --*/   
  -------------------------------------------------------------------------------   
    
  -------------------------------------------------------------------------------   
  --/*--
恢復數據庫 :p_RestoreDb     
  --/*--
調用示例    
  --
完整恢復數據庫    
  exec   p_RestoreDb   @bkfile='c:/db_20031015_db.bak',@dbname='db'   
  --
差異備份恢復    
  exec   p_RestoreDb   @bkfile='c:/db_20031015_db.bak',@dbname='db',@retype='DBNOR'   
  exec   p_backupdb   @bkfile='c:/db_20031015_df.bak',@dbname='db',@retype='DF'   
  --
日誌備份恢復    
  exec   p_RestoreDb   @bkfile='c:/db_20031015_db.bak',@dbname='db',@retype='DBNOR'   
  exec   p_backupdb   @bkfile='c:/db_20031015_log.bak',@dbname='db',@retype='LOG'   
  --*/   
    
  /*--
參數說明    
  @bkfile   nvarchar(1000), --
定義要恢復的備份文件名    
  @dbname   sysname='',         --
定義恢復後的數據庫名 , 默認爲 備份的文件名    
  @dbpath   nvarchar(260)='', --
恢復後的數據庫存放目錄 , 不指定 則爲 SQL 的默認數據目錄    
  @retype   nvarchar(10)='DB', --
恢復類型 :'DB' 完 事恢復數據庫 ,'DBNOR'    爲差異恢復 , 日誌恢 復進行完整恢復 ,'DF'    差異備份的恢復 ,'LOG'    日誌恢復    
  @filenumber   int=1, --
恢復的文件號    
  @overexist   bit=1,             --
是否覆蓋已經存在的數據庫 , @retype    
  @killuser   bit=1   --
是否關閉用戶使用進程 , @overexist=1 時有效    
  --*/   
  -------------------------------------------------------------------------------   
    
  -------------------------------------------------------------------------------   
  --/*--
創建作業 :p_createjob     
    
  --/*--
調用示例    
  --
每月執行的作業    
  exec   p_createjob   @jobname='mm',@sql='select   *   from   syscolumns',@freqtype='month'   
    
  --
每週執行的作業    
  exec   p_createjob   @jobname='ww',@sql='select   *   from   syscolumns',@freqtype='week'   
    
  --
每日執行的作業    
  exec   p_createjob   @jobname='a',@sql='select   *   from   syscolumns'   
    
  --
每日執行的作業 , 每天隔 4 小時重複的作業    
  exec   p_createjob   @jobname='b',@sql='select   *   from   syscolumns',@fsinterval=4   
  --*/   
    
  /*--
參數說明 :   
  @jobname   varchar(100), --
作業名稱    
  @sql   varchar(8000), --
要執行的命令    
  @dbname   sysname='', --
默認爲當前的數據庫名    
  @freqtype   varchar(6)='day', --
時間週期 ,month    ,week    ,day       
  @fsinterval   int=1, --
相對於每日的重複次數    
  @time   int=170000 --
開始執行時間 , 對於重 復執行的作業 , 將從 0 點到 23:59    
  */-- 
/*--
應用案例 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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章