通過腳本創(chuàng)建JOB:
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), --作業(yè)名稱
@sql varchar(8000), --要執(zhí)行的命令
@serverName sysname='', --job server名
@dbname sysname='', --默認(rèn)為當(dāng)前的數(shù)據(jù)庫名
@freqtype varchar(6)='day', --時(shí)間周期,month 月,week 周,day 日
@fsinterval int=1, --相對(duì)于每日的重復(fù)次數(shù)
@time int=170000 --開始執(zhí)行時(shí)間,對(duì)于重復(fù)執(zhí)行的作業(yè),將從0點(diǎn)到23:59分
as
if isnull(@dbname,'')='' set @dbname=db_name()
--創(chuàng)建作業(yè)
exec msdb..sp_add_job @job_name=@jobname
--創(chuàng)建作業(yè)步驟
exec msdb..sp_add_jobstep @job_name=@jobname,
@step_name = '數(shù)據(jù)處理',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql,
@retry_attempts = 5, --重試次數(shù)
@retry_interval = 5 --重試間隔
--創(chuàng)建調(diào)度
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 = '時(shí)間安排',
@freq_type=@ftype , --每天,8 每周,16 每月
@freq_interval=1, --重復(fù)執(zhí)行次數(shù)
@freq_subday_type=@fstype, --是否重復(fù)執(zhí)行
@freq_subday_interval=@fsinterval, --重復(fù)周期
@freq_recurrence_factor=@ffactor,
@active_start_time=@time --下午17:00:00分執(zhí)行
if @servername=''
set @servername=@@servername
EXEC msdb..sp_add_jobserver @job_name = @jobname,
@server_name = @servername
go
--調(diào)用
--每天執(zhí)行的作業(yè)
exec p_createjob @jobname='dd'
,@sql='insert B select convert(char(10),getdate(),120),1+(select max([text]) from B)'
,@servername='job服務(wù)器名'
,@dbname='數(shù)據(jù)庫名'
,@freqtype='day'
,@time='000000'
===============================================================
以下是另一個(gè)版本,出自博客園
http://www.cnblogs.com/datasky/archive/2006/12/28/606354.html
--每月執(zhí)行的作業(yè)
exec p_createjob @jobname='mm',@sql='select * from syscolumns',@freqtype='month'
--每周執(zhí)行的作業(yè)
exec p_createjob @jobname='ww',@sql='select * from syscolumns',@freqtype='week'
--每日?qǐng)?zhí)行的作業(yè)
exec p_createjob @jobname='a',@sql='select * from syscolumns'
--每日?qǐng)?zhí)行的作業(yè),每天隔4小時(shí)重復(fù)的作業(yè)
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),--作業(yè)名稱
@sql varchar(8000),--要執(zhí)行的命令
@dbname sysname='',--默認(rèn)為當(dāng)前的數(shù)據(jù)庫名
@freqtype varchar(6)='day',--時(shí)間周期,month 月,week 周,day 日
@fsinterval int=1,--相對(duì)于每日的重復(fù)次數(shù)
@time int=170000--開始執(zhí)行時(shí)間,對(duì)于重復(fù)執(zhí)行的作業(yè),將從0點(diǎn)到23:59分
as
if isnull(@dbname,'')='' set @dbname=db_name()
--創(chuàng)建作業(yè)
exec msdb..sp_add_job @job_name=@jobname
--創(chuàng)建作業(yè)步驟
exec msdb..sp_add_jobstep @job_name=@jobname,
@step_name = '數(shù)據(jù)處理',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql,
@retry_attempts = 5, --重試次數(shù)
@retry_interval = 5 --重試間隔
--創(chuàng)建調(diào)度
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 = '時(shí)間安排',
@freq_type=@ftype , --每天,8 每周,16 每月
@freq_interval=1,--重復(fù)執(zhí)行次數(shù)
@freq_subday_type=@fstype,--是否重復(fù)執(zhí)行
@freq_subday_interval=@fsinterval, --重復(fù)周期
@freq_recurrence_factor=@ffactor,
@active_start_time=@time --下午17:00:00分執(zhí)行
-- 添加目標(biāo)服務(wù)器
EXEC msdb.dbo.sp_add_jobserver
@job_name = @jobname ,
@server_name = N'(local)'
go
新聞熱點(diǎn)
疑難解答
圖片精選