首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Oracle频道
中国IT教育
Google
首页 入门基础 安装配置 体系架构 PLSQL 备份恢复 性能调优 开发技术 资讯动态 考试认证 下载 专题 讨论
您现在的位置: 中国IT实验室 >> Oracle >> 备份恢复 >> 正文

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

        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

上一页  [1] [2] [3] [4] 下一页

【责编:michael】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Oracle频道相关导航