高级会员
- 积分
- 760
- 金钱
- 630
- 贡献
- 53
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次------------------------ Q4 @' K- A; @6 K7 B7 E
USE msdb;1 Z: w6 y% y; v: \3 `* u3 e; U
GO$ B& x+ f! h3 s5 T/ a1 q5 Y7 f
& _" n4 g, w' Q7 Y/ Z8 i0 z! t- W-- 如果作业已存在,则先删除它
2 p+ Z0 D) P, c5 s& xIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob'), ]% o* K& p( v& X: W2 Y% ~$ u
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';2 M' s8 l6 q1 K& M
GO6 ?6 Q! M& y7 r: q' P
0 P$ G! n. z) Q4 n# q8 H
-- 创建新的作业
1 q0 K, G" y1 n+ ~( J' TEXEC sp_add_job 9 K2 ~+ Q) f+ i$ I
@job_name = N'IncreaseUserCashJob', -- 作业名称3 n) O2 [7 O$ c" z
@enabled = 1, -- 启用作业
9 c' u- f' d) W6 T @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改- {9 w; N. X0 y; ~2 A
@notify_level_email = 0, -- 不发送电子邮件通知. p6 r( W# R+ o! [$ k
@notify_level_netsend = 0, -- 不发送网络消息通知
* b' H( T+ ?3 `7 U0 [ S* ` @notify_level_page = 0, -- 不发送寻呼通知
4 o9 v" B3 k2 ^6 d @delete_level = 0, -- 不自动删除作业
2 `6 V& M9 ?% S% G- V @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述8 t1 W, D% v* w" p( A: h- R/ }& o
@category_name = N'[Uncategorized (Local)]', -- 作业类别
8 E9 y0 e+ Q8 O S! w% ^- s @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
# H$ b f9 @& K9 ]5 ] @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
4 p* G, d8 g" p( YGO' H- a; n2 A4 _6 ?' Z
4 {2 j6 a' Q4 `$ c-- 为作业添加一个步骤
2 {( M/ M- c+ n9 \EXEC sp_add_jobstep
3 o! g- e* k. U( a3 _ @job_name = N'IncreaseUserCashJob', -- 作业名称
3 i- L, @/ W: O) }+ z: I: Q2 c @step_name = N'ExecuteStoredProcedure', -- 步骤名称
- A- t; f/ A6 P @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
' n* V) C2 T& f: q+ i7 z( z2 b* C @database_name = N'account', -- 指定数据库名称
- i* @8 e6 A* S) { @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
' r7 k& F; W% Z0 H; J o @retry_attempts = 5, -- 重试次数
/ \& d) m7 m! t) T7 | @retry_interval = 5; -- 重试间隔(分钟)* M) v% ?# X7 t! r6 h! k& q
GO" {* ]: q6 a( _8 ~; U+ U* c( A
1 D3 l% p4 ]4 a! t( p& u-- 为作业添加一个每分钟执行一次的调度
7 n- J% P9 q, w& I$ d( ]* ?" oEXEC sp_add_schedule
0 e3 v5 {, ]$ D @schedule_name = N'MinuteSchedule', -- 调度名称$ a. O1 q: p/ ~) @. G* ~
@freq_type = 4, -- 频率类型(4表示每日)
0 z, \8 m' ?$ j; C5 R1 p4 X @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
8 a+ ~& o5 T2 T) f/ D" H) e/ b6 m% ? @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
( Z& ]/ s$ ^/ g9 E @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
: E {3 z7 J- n, Z1 X& E g; s @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)9 [' K) N" A1 C4 d; s" X+ F# {, b
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)/ X+ }9 ^" G u* o2 _# I4 q+ y
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
4 h+ p8 c) h+ ^* d @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)! w6 ?0 T4 q) f3 Q T) W
GO
- g* K+ O) s# q* o
- `6 t2 p3 r! q-- 将作业与调度关联起来( P6 J2 T; ]( m
EXEC sp_attach_schedule 4 @& Z$ q h( N1 P; q
@job_name = N'IncreaseUserCashJob', -- 作业名称
5 h2 i& V# Q3 l! Z @schedule_name = N'MinuteSchedule'; -- 调度名称# V. S) N$ ^- Y
GO
}! @: w9 \. M7 E% Z8 K6 P
: n# O5 M& L7 Y( V-- 提交作业创建到SQL Server Agent
$ Z, d. L9 M+ J8 c- e2 @, C3 fEXEC sp_add_jobserver 9 ^/ K# K9 y: i* F+ z
@job_name = N'IncreaseUserCashJob', -- 作业名称0 {9 W! W' {4 E% `
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')2 `8 t9 C1 I% O* D- R
GO
+ I) @- M7 B9 j/ F6 m M: R# P7 ^/ R$ l
5 G6 H; x8 I' W! N& Z
, E+ b6 G) G9 M, R9 i R `$ b+ k# T7 E, [, Y
( T8 z3 K. k% M* p |
|