通過儲存過程建立SQL作業

2022-08-27 13:15:09 字數 2990 閱讀 7768

雖然大多時候可以手動新增作業,但是有些情況我們不得不動態控制作業的運作時間的頻率;

use

dbname

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 定時呼叫儲存過程 建...