高级会员
- 积分
- 838
- 金钱
- 702
- 贡献
- 59
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
i, h4 m; C* Y- @+ z, gUSE msdb;1 i0 y8 {" _) I, V: ?
GO
1 Q- r4 T( R' A% v" v* j
! X( ^/ }+ \3 u0 }) R-- 如果作业已存在,则先删除它
* B" l# q5 r0 A, Y6 Q/ o2 HIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob'): d# y! H0 n, [8 E' e* ]1 p
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';( @( ~0 q1 j* _$ p+ r1 B4 ?$ P
GO% W; Y- E# A( b( e
% j$ u: o! G6 M! T" E& G; P-- 创建新的作业
3 {, [$ g, R* f* oEXEC sp_add_job 7 f. o. ~% ]2 f5 y( U6 t7 X, l
@job_name = N'IncreaseUserCashJob', -- 作业名称, B% w7 _ E# o: c
@enabled = 1, -- 启用作业
' ]5 t8 d6 Y& X2 r" X @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改! T6 F7 l) M, @. B) }
@notify_level_email = 0, -- 不发送电子邮件通知
$ |5 D" {; X9 k' |7 T: Q @notify_level_netsend = 0, -- 不发送网络消息通知
1 C, Q2 k# F# c: A* d2 ?* E8 S @notify_level_page = 0, -- 不发送寻呼通知
* j% O3 {7 E; o! ~$ d @delete_level = 0, -- 不自动删除作业
+ e, m9 v( L, V! `+ t+ L7 A V @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述6 M. c( m. B- B( s: x6 e3 ~9 d
@category_name = N'[Uncategorized (Local)]', -- 作业类别
. f& ]7 b( T& ^9 O. \ V" X @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)& |4 J N; U6 ?3 v2 o- J
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员/ @) D, z @& e% \
GO# A: M v. |7 P& f! ^1 ~
" d+ C( D6 b# Y1 K5 a
-- 为作业添加一个步骤8 `- R/ U; o! W( X, d; k2 ^1 h
EXEC sp_add_jobstep . |1 Q9 ~& x5 U1 ?
@job_name = N'IncreaseUserCashJob', -- 作业名称0 [' N& I% Y3 U9 p3 o: c# u. |
@step_name = N'ExecuteStoredProcedure', -- 步骤名称: [; s- ~9 {5 ]1 x5 l
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)# b3 j ^7 ? E. E: G' V5 r! W
@database_name = N'account', -- 指定数据库名称, F) H; L" l8 U1 n+ E$ b3 U/ w
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
8 A- _8 s, c% m' V0 c1 P7 t @retry_attempts = 5, -- 重试次数
% |3 T, ]4 H# y% `# H @retry_interval = 5; -- 重试间隔(分钟)
: g: w6 p; c& Y: R1 ZGO
' H; k% o+ B$ F4 B; _9 [' P/ o7 o1 V
-- 为作业添加一个每分钟执行一次的调度, |$ U3 e4 D3 a/ q d4 w
EXEC sp_add_schedule
& _% H- C' `# [/ E& q: ^1 k& f @schedule_name = N'MinuteSchedule', -- 调度名称3 r" ^, F* ^" B# F7 p, B& b1 |
@freq_type = 4, -- 频率类型(4表示每日)
. ^2 l( ]# A* `- g @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
: @3 o& t, A% b0 y9 q @freq_subday_type = 4, -- 子日频率类型(4表示分钟)% S- x, A0 B* X& r1 _9 t( d
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次); M! _6 c4 N. e) V& p( f
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
. B# _9 s0 Y/ }$ R3 E! {( ^ @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
! R1 N: `# T+ A2 j z, v @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期). v) c/ n, V; Y( @3 ^' z
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
7 I+ O9 u! u' K3 S$ D9 iGO# ?5 p. y$ g" b
, @* G. S+ T8 L( k3 m2 ?+ D-- 将作业与调度关联起来' [8 `$ i4 C' \5 k
EXEC sp_attach_schedule
3 Y: `) B; w" p @job_name = N'IncreaseUserCashJob', -- 作业名称
- V+ T5 ~3 O! c3 a p9 g+ y @schedule_name = N'MinuteSchedule'; -- 调度名称6 J7 e) i" K+ |% s* L4 M$ j" u
GO
8 l- K7 c0 G! R/ z' P4 L8 n2 O, @; a' H: @9 V( Q; J1 m+ l6 z" ?
-- 提交作业创建到SQL Server Agent
0 [& a# P! k P' Y0 u& R0 G tEXEC sp_add_jobserver 5 O+ P; b; W1 ]; c
@job_name = N'IncreaseUserCashJob', -- 作业名称
! z7 i8 V/ l0 F- x @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
- G8 k0 z) W8 F; NGO
$ {( B1 i% \* ?2 ?. f) K
6 b8 c( {$ a3 n/ C2 ~5 q, I7 M* `6 w
, {2 |* \7 G; W5 Q% A
% n& {: i8 z, }& H+ |3 D, w3 x- ~9 q
|
|