CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

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

作者: 流浪浪,  出处:blog, 责任编辑: 王晓晨, 
2008-07-24 00:00
  本文介绍了利用T-SQL语句,实现数据库的备份与还原的功能,体现了SQL Server中的四个知识点。

     4.--创建作业
   

     调用示例

--每月执行的作业
  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

  应用案例--备份方案:

  完整备份(每个星期天一次)+差异备份(每天备份一次)+日志备份(每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
共4页。 9 1 2 3 4 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i