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

日期: 2008-07-23 作者:流浪浪 来源:TechTarget中国 英文

  4.–创建作业
   


  调用示例







–每月执行的作业 
  &#101xec p_createjob @jobname=’mm’,@sql=’select * from syscolumns’,@freqtype=’month’ 
  –每周执行的作业 
  &#101xec p_createjob @jobname=’ww’,@sql=’select * from syscolumns’,@freqtype=’week’ 
  –每日执行的作业 
  &#101xec p_createjob @jobname=’a’,@sql=’select * from syscolumns’ 
  –每日执行的作业,每天隔4小时重复的作业 
  &#101xec 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() 
  –创建作业 
  &#101xec msdb..sp_add_job @job_name=@jobname 
  –创建作业步骤 
  &#101xec 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 
  &#101xec 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 


  应用案例–备份方案:


  完整备份(每个星期天一次)+差异备份(每天备份一次)+日志备份(每2小时备份一次)


  调用上面的存储过程来实现






declare @sql varchar(8000) 
  –完整备份(每个星期天一次) 
  set @sql=’&#101xec p_backupdb @dbname=’’要备份的数据库名’’’ 
  &#101xec p_createjob @jobname=’每周备份’,@sql,@freqtype=’week’ 
  –差异备份(每天备份一次) 
  set @sql=’&#101xec p_backupdb @dbname=’’要备份的数据库名’’,@bktype=’DF’’ 
  &#101xec p_createjob @jobname=’每天差异备份’,@sql,@freqtype=’day’ 
  –日志备份(每2小时备份一次) 
  set @sql=’&#101xec p_backupdb @dbname=’’要备份的数据库名’’,@bktype=’LOG’’ 
  &#101xec p_createjob @jobname=’每2小时日志备份’,@sql,@freqtype=’day’,@fsinterval=2 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐