zoukankan      html  css  js  c++  java
  • 利用作业,每个月自动创建表

    按照下图的方法,一步一步的创建作业:
    CreateJob.JPG



    下面是网上找的一段代码:
    http://www.wangchao.net.cn/bbsdetail_580773.html

       use test1

      go

      --设置SQL Agent 服务为自动启动

      exec msdb..sp_set_sqlagent_properties @auto_start=1

      go

      --创建作业

      exec msdb..sp_add_job @job_name=N'自动建库处理'

      --创建作业步骤

      declare @sql varchar(800),@dbname varchar(250)

      select @sql=N'exec sp_ProcCopyDb' --调用自动建库的存储过程

      ,@dbname=db_name() --执行自动建库处理的数据库名

      exec msdb..sp_add_jobstep @job_name=N'自动建库处理',

      @step_name = '建库处理',

      @subsystem = 'TSQL',

      @database_name=@dbname,

      @command = @sql,

      @retry_attempts = 5, --重试次数

      @retry_interval = 5 --重试间隔

      --添加作业调度(每月最后一个工作日)

      EXEC msdb.dbo.sp_add_jobschedule @job_name = N'自动建库处理',

      @name = N'时间安排',

      @freq_type = 32,

      @active_start_time = 0, --0点开始执行

      @freq_interval = 9, --每月最后一个工作日

      @freq_subday_type = 1,

      @freq_subday_interval = 0,

      @freq_relative_interval = 16,

      @freq_recurrence_factor = 1

      -- 添加目标服务器

      EXEC msdb.dbo.sp_add_jobserver

      @job_name = N'自动建库处理' ,

      @server_name = N'(local)'

      /*--已知问题

      由于sql生成脚本的BUG,有的数据库可能无法用生成脚本的方法进行处理

      --*/

     
    下面也是在网上找的代码:

    1  if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Pro_AddTask]'and OBJECTPROPERTY(id, N'IsProcedure'= 1
     4   drop procedure [dbo].[Pro_AddTask]
     
     5   GO
      
     6   create proc
     Pro_AddTask
     7   @taskname varchar(100), 
    --task name 
     8
       @sql varchar(8000), 
    --slq command 
     9
       @dbname sysname=''
    -- default the current db
    10
       @freqtype varchar(6)='day'
    --the frequence of time :month ,week ,day 
    11
      @freqsubtype varchar(6)='no' ,
    --no, hour ,minute
    12
       @fqinterval int=1
    --the execute times 
    13
      @fqsubinterval int=1
    --the sub interval
    14
       @time int=000000 
    -- execute on some time format(hhmmss)
    15
       as
     
    16  
    /*--creat task  
    17
     
       
    18
     
     --author:sky 2008.02.27 
    19
     
       
    20
     
      discription: 
    21
     
      when @freqtype='week' when @fqinterval=
    22
        1 = 星期日

    23
        2 = 星期一
    24
        4 = 星期二
    25
        8 = 星期三
    26
        16 = 星期四
    27
        32 = 星期五
    28
        64 = 星期六
    29
      */
    30  /*--eg. 
    31
     
       
    32
      --每月执行的作业
     
    33
     
     exec Pro_AddTask @taskname='mm',@sql='seleCT * from syscolumns',@freqtype='month' 
    34
     
       
    35
      --每周执行的作业
     
    36
     
     exec Pro_AddTask @taskname='ww',@sql='select * from syscolumns',@freqtype='week' 
    37
     
       
    38
      --每日00000执行的作业
     
    39
     
     exec Pro_AddTask @taskname='ab',@sql='select * from syscolumns' 
    40
     
      
    41
       --每日12:00:00作业
     
    42
     
     exec Pro_AddTask @taskname='d12',@sql='select * from syscolumns',@time=12000
    43
     
     
    44
       --每周六12:00:00作业
     
    45
     
     exec Pro_AddTask @taskname='w12',@sql='select * from syscolumns',@freqtype='week',@fqinterval=64,@time=12000
    46
     
      
    47
       --每月2012:00:00作业
     
    48
     
     exec Pro_AddTask @taskname='m20',@sql='select * from syscolumns',@freqtype='month',@fqinterval=20,@time=12000
    49
     
      
    50
      --*/
     
    51   if isnull(@dbname,'')='' set @dbname=db_name
    () 
    52   
    --create task 
    53
       exec msdb..sp_add_job @job_name=@taskname

    54 
    55   --create task step  
    56
       exec msdb..sp_add_jobstep @job_name=@taskname

    57   @step_name = 'data process'

    58   @subsystem = 'TSQL'

    59   @database_name=@dbname

    60   @command = @sql

    61   @retry_attempts = 5
    ,   
    62   @retry_interval = 5
      
    63 
      
    64   
    --create schedule 
    65
       declare @ftype int,@fstype int,@ffactor int
     
    66   select @ftype=case @freqtype
      
    67     when 'day' then 4
     
    68     when 'week' then 8
     
    69     when 'month' then 16
     
    70    end
     
    71  ,@fstype=case @freqsubtype
     
    72    when 'no' then 1
     
    73    when 'hour' then  4

    74    when 'minutue' then 8
    75    else 0  
    76    end
     
    77   set @ffactor=case @freqtype when 'day' then 0 else 1 end
     
    78 
      
    79   EXEC msdb..sp_add_jobschedule @job_name=@taskname
    ,   
    80   @name = 'schedule'

    81   @freq_type=@ftype , ---4 每天,8 每周,16 每月
      
    82
       @freq_interval=@fqinterval--作业执行的天数

    83
       @freq_subday_type=@fstype--是否重复执行,0x1 在指定的时间, 0x4 分钟, 0x8 小时
    84
       @freq_subday_interval=@fqsubinterval--重复周期 
    85
       @freq_recurrence_factor=@ffactor--重复执行,则设置为1,否则设置为
    0
    86
       @active_start_time=@time   --下午00:00:00分执行
     
    87
       
    -- add the goal server 
    88
       EXEC
     msdb.dbo.sp_add_jobserver   
    89   @job_name = @taskname
      , 
    90   @server_name = N'(local)'

  • 相关阅读:
    2018牛客网暑期ACM多校训练营(第九场)A -Circulant Matrix(FWT)
    ZOJ
    BZOJ 4318 OSU!(概率DP)
    POJ
    POJ
    Linux安装及管理程序
    Linux目录及文件管理
    linux账号管理操作
    linux系统命令总结
    linux目录及文件管理操作
  • 原文地址:https://www.cnblogs.com/LeimOO/p/1416743.html
Copyright © 2011-2022 走看看