雖然大多時候可以手動新增作業,但是有些情況我們不得不動態控制作業的運作時間的頻率;
usedbname
go/*
***** object: storedprocedure [dbo].[usp_createjob] script date: 03/26/2014 14:36:30 *****
*/if
exists (select
*from dbo.sysobjects where id =
object_id(n'
[dbo].[usp_createjob]
') and
objectproperty(id, n'
isprocedure
') =1)
drop
procedure
[dbo
].[usp_createjob]go
create
proc
usp_createjob
@sql
varchar(8000), --
要執行的命令
@freqtype
varchar(6)=
'day
', --
時間週期,month 月,week 周,day 日
@fsinterval
int=
1, --
相對於每日的重複次數
@time
int=
233000
--開始執行時間,對於重複執行的作業,將從0點到23:59分
as--
判斷作業是否存在
ifexists(select
*from
msdb.dbo.sysjobs
where name=
'historymanagerplan')
begin
--如果作業存在則先刪除原來作業
execute msdb..sp_delete_job @job_name='
historymanagerplan
'end
--建立作業
exec msdb..sp_add_job @job_name='
historymanagerplan'--
建立作業步驟
exec msdb..sp_add_jobstep @job_name='
historymanagerplan',
@step_name='
資料處理',
@subsystem='
tsql',
@database_name=[
btlife_history
],--
預設為當前的資料庫名
@command
=@sql
,
@retry_attempts
=5, --
重試次數
@retry_interval=5
--重試間隔
--建立排程
declare
@ftype
int,@fstype
int,@ffactor
intselect
@ftype
=case
@freqtype
when
'day
'then
4when
'week
'then
8when
'month
'then
16end
,@fstype
=case
@fsinterval
when
1then
0else
8end
if@fsinterval
<>
1set
@time=0
set@ffactor
=case
@freqtype
when
'day
'then
0else
1end
exec msdb..sp_add_jobschedule @job_name='
historymanagerplan',
@name='
時間安排',
@freq_type
=@ftype , --
4 每天,8 每週,16 每月
@freq_interval
=1, --
重複執行次數
@freq_subday_type
=@fstype, --
是否重複執行
@freq_subday_interval
=@fsinterval, --
重複週期
@freq_recurrence_factor
=@ffactor
,
@active_start_time
=@time
--下午23:30:00分執行
exec msdb..sp_add_jobserver @job_name='
historymanagerplan',
@server_name
= n'
(local)'go
----------------呼叫執行儲存過程建立作業----------------------------
exec
dbname.dbo.usp_createjob
@sql='
exec usp_deletehistory @days=
''90
''',
@time='
155000
'
SQL 建立儲存過程PROCEDURE
1 建立儲存過程 use test2 gocreate procedure fruitproce 檢視表fruits的儲存過程 asselect from fruits go use test2 go create procedure countproce 獲取表fruits的記錄數 asselec...
sql儲存過程的建立
一 沒有引數的儲存過程 create procedure select all asbegin select from t login1 endgo 二 帶引數的儲存過程 create procedure select name id uniqueidentifier asbegin select ...
建立作業的通用儲存過程
if exists select from dbo.sysobjects where id object id n dbo p jobset and objectproperty id,n isprocedure 1 drop procedure dbo p jobset go 定時呼叫儲存過程 建...