sql语句创建脚本作业

来源:互联网 发布:回头是爱网络电影 编辑:程序博客网 时间:2024/05/17 07:11

服务器比较多的情况下,创建作业的最好办法就是写脚本,用sql脚本可以提高效率,比手动更高效。

我自己的经验如下两种方式:

首先手动添加脚本

第一步


第二步


第三步


第四步


第五步


第六步


下面就是用sql写作业了

这个是我自己的写的例子

DECLARE @jobidin uniqueidentifier 

EXEC msdb.dbo.sp_add_job 
    @job_name = N'sqlStarRankSnapShot',  --作业名称
    @job_id = @jobidin OUTPUT          

DECLARE @sqlein nvarchar(400),@dbnamein sysname 
SELECT @dbnamein=DB_NAME(),  --作业步骤在当前数据库中执行 
    @sqlein=N'exec insertDataToStarFashionTotal'   --一般定义的是使用TSQL处理的作业,这里定义要执行的Transact-SQL语句 
EXEC msdb.dbo.sp_add_jobstep 
    @job_id = @jobidin, 
    @step_name = N'sqlStarSnapShot',      
    @subsystem = 'TSQL', --步骤的类型,一般为TSQL 
    @database_name=@dbnamein, 
    @command = @sqlein 
  
--创建调度(使用后面专门定义的几种作业调度模板) 
EXEC msdb..sp_add_jobschedule 
    @job_id = @jobidin, 
    @name = N'timerStarSnapShot', 
    @freq_type=4,                --每天 
    @freq_interval=1,            --指定每多少天发生一次,这里是1天. 
   -- @freq_subday_type=0x8,       --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次 
   --@freq_subday_interval=24,     --重复周期数,这里每小时执行一次 
    @active_start_date = NULL,   --作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD 
    @active_end_date = 99991231, --作业执行的停止日期,默认为99991231,格式为YYYYMMDD 
    @active_start_time=000000 --,   --作业执行的开始时间,格式为HHMMSS 
   -- @active_end_time = 164009   --业执行的停止时间,格式为HHMMSS 
  
--添加目标服务器 
DECLARE @servernamin sysname 
SET @servernamin=CONVERT(nvarchar(128),SERVERPROPERTY(N'ServerName')) 
EXEC msdb.dbo.sp_add_jobserver  
    @job_id = @jobidin, 

    @server_name = @servernamin --使用当前SQL实例

但是一般时间设置也很关键,一定要注意。

以下是粘贴别人的时间设置

--/*--日调度  
EXEC   msdb..sp_add_jobschedule  
                @job_id   =   @jobid,  
                @name   =   N '调度名称 ',  
                @freq_type=4,                                 --每天  
                @freq_interval=1,                         --指定每多少天发生一次,这里是1天.  
                @freq_subday_type=0x8,               --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次  
                @freq_subday_interval=1,           --重复周期数,这里每小时执行一次  
                @active_start_date   =   NULL,       --作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD  
                @active_end_date   =   99991231,   --作业执行的停止日期,默认为99991231,格式为YYYYMMDD  
                @active_start_time   =   00000,     --作业执行的开始时间,格式为HHMMSS  
                @active_end_time   =   235959         --作业执行的停止时间,格式为HHMMSS  
--*/   
--/*--周调度  
EXEC   msdb.dbo.sp_add_jobschedule  
                @job_id   =   @jobid,  
                @name   =   N '调度名称 ',    
                @freq_type   =   8,                             --每周  
                @freq_recurrence_factor   =   1,   --每多少周执行一次,这里是每周  
                @freq_interval   =   62,                   --在星期几执行,由POWER(2,N)表示,N的值为0~6,代表星期日~星期六,如果指定两个,则将值相加,例如,值为65表示在星期天和星期日执行(POWER(2,0)+POWER(2,6))  
                @freq_subday_type   =   0x8,           --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次  
                @freq_subday_interval   =   1,       --重复周期数,这里每小时执行一次  
                @active_start_date   =   NULL,       --作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD  
                @active_end_date   =   99991231,   --作业执行的停止日期,默认为99991231,格式为YYYYMMDD  
                @active_start_time   =   00000,     --作业执行的开始时间,格式为HHMMSS  
                @active_end_time   =   235959         --作业执行的停止时间,格式为HHMMSS  
--*/   
--/*--月调度(每X个月的每月几号)  
EXEC   msdb.dbo.sp_add_jobschedule  
                @job_id   =   @jobid,  
                @name   =   N '调度名称 ',    
                @freq_type   =   16,                           --每月  
                @freq_recurrence_factor   =   2,   --每多少月执行一次,这里是每2个月  
                @freq_interval   =   2,                     --在执行月的第几天执行,这里是第2天  
                @freq_subday_type   =   0x8,           --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次  
                @freq_subday_interval   =   1,       --重复周期数,这里每小时执行一次  
                @active_start_date   =   NULL,       --作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD  
                @active_end_date   =   99991231,   --作业执行的停止日期,默认为99991231,格式为YYYYMMDD  
                @active_start_time   =   00000,     --作业执行的开始时间,格式为HHMMSS  
                @active_end_time   =   235959         --作业执行的停止时间,格式为HHMMSS  
--*/   
--/*--月调度(每X个月的相对时间)  
EXEC   msdb.dbo.sp_add_jobschedule  
                @job_id   =   @jobid,  
                @name   =   N '调度名称 ',    
                @freq_type   =   32,                           --每月  
                @freq_recurrence_factor   =   2,   --每多少月执行一次,这里是每2个月  
                @freq_interval   =   9,                     --在当月的那个时间执行,1~7=星期日至星期六,8=日   ,9=工作日,10=周末  
                @freq_relative_interval   =   1,   --在第几个相对时间执行,允许的值为1,2,4,8代表第1~4个相对时间,16表示最后一个相对时间  
                @freq_subday_type   =   0x8,           --重复方式,0x1=在指定的时间,0x4=多少分钟,0x8=多少小时执行一次  
                @freq_subday_interval   =   1,       --重复周期数,这里每小时执行一次  
                @active_start_date   =   NULL,       --作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD  
                @active_end_date   =   99991231,   --作业执行的停止日期,默认为99991231,格式为YYYYMMDD  
                @active_start_time   =   00000,     --作业执行的开始时间,格式为HHMMSS  
                @active_end_time   =   235959         --作业执行的停止时间,格式为HHMMSS  
--*/   
--/*--在特定时候执行的作业调度  
EXEC   msdb.dbo.sp_add_jobschedule  
                @job_id   =   @jobid,  
                @name   =   N '调度名称 ',    
                @freq_type   =   64           --64=在SQLServerAgent   服务启动时运行,128=计算机空闲时运行  
--*/   
--/*--只执行一次的作业调度  
EXEC   msdb..sp_add_jobschedule  
                @job_id   =   @jobid,  
                @name   =   N '调度名称 ',  
                @freq_type=1,                                 --仅执行一次  
                @active_start_date   =   NULL,       --作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD  
                @active_start_time   =   00000       --作业执行的开始时间,格式为HHMMSS  
--*/ 


0 0
原创粉丝点击