zoukankan      html  css  js  c++  java
  • SQL Server 定时备份数据库(作业)

    use iSignatureKey --数据名称


    if exists (select * from dbo.sysobjects where id=object_id(N'[dbo].mysp_All_iSignatureKey') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop  procedure [dbo].mysp_All_iSignatureKey
    go


    CREATE PROCEDURE mysp_All_iSignatureKey
    @bakpath varchar(4000) --备份路径
    AS           
    BACKUP   DATABASE   iSignatureKey  TO   DISK   =   @bakpath 
    GO


    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), --要执行的命令
     @serverName sysname='',--job server名
     @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()
    --创建作业
    if exists(select 1 from msdb..sysjobs where name=@jobname)
    exec msdb..sp_delete_job @job_name=@jobname
    exec msdb..sp_add_job @job_name=@jobname
    --创建作业步骤
    exec msdb..sp_add_jobstep   @job_name=@jobname,
     @step_name='BakdataStart',
     @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_interval=@fsinterval,--重复周期
    @freq_recurrence_factor=@ffactor,
    @active_start_time=@time--下午17:00:00分执行

    if @servername=''
    set @servername=@@servername
    EXEC msdb..sp_add_jobserver @job_name=@jobname,
    @server_name=@servername
    go

    exec p_createjob @jobname='iSignatureKey.bak',
    @sql='exec mysp_All_iSignatureKey @bakpath="d:\iSignatureKey.bak"', --bakpath备份路径
    @dbname='iSignatureKey',
    @freqtype='day',
    @time='235959' --你起备份的时间HHMMSS(HH:24制小时,MM:分钟,SS:秒)

  • 相关阅读:
    Linux常用命令大全(非常全!!!)
    洛谷 P3379 【模板】最近公共祖先(LCA)
    POJ 3259 Wormholes
    POJ 1275 Cashier Employment
    POJ 3169 Layout
    POJ 1201 Intervals
    洛谷 P5960 【模板】差分约束算法
    洛谷 P3275 [SCOI2011]糖果
    POJ 2949 Word Rings
    POJ 3621 Sightseeing Cows
  • 原文地址:https://www.cnblogs.com/guanjie20/p/1651750.html
Copyright © 2011-2022 走看看