高级会员
- 积分
- 786
- 金钱
- 654
- 贡献
- 55
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
3 L) z. L6 U- z) kUSE msdb;! J! f6 D) p8 E) r
GO6 R( m) m* j) k
0 [6 N; w# ]: x5 {) S- ]
-- 如果作业已存在,则先删除它8 T+ ~" }3 y" j+ |1 X2 F
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')* _; }+ W5 B4 p# i( z- L S
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
6 I( e( R- v5 l3 h/ @GO
- {) B/ z c+ r; U1 I4 T3 i9 Z0 L
-- 创建新的作业. T0 {, f+ V4 ?; ^; I) {
EXEC sp_add_job
5 b$ ~: \: s q9 z }. Z0 K3 v: J) i" q0 { @job_name = N'IncreaseUserCashJob', -- 作业名称5 Q3 q ^! E# D7 q8 c8 F
@enabled = 1, -- 启用作业
' B& l4 P" j' f: } @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
8 P! z" H8 H7 G9 E @notify_level_email = 0, -- 不发送电子邮件通知' W! v0 O; O1 Q" L
@notify_level_netsend = 0, -- 不发送网络消息通知$ \0 m+ A3 y6 R! U: G6 Q
@notify_level_page = 0, -- 不发送寻呼通知5 K/ H7 \+ k" c* [
@delete_level = 0, -- 不自动删除作业
0 q( C1 j+ E. o# o1 d4 Z& G& H1 d @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述! E. n0 J& [* L
@category_name = N'[Uncategorized (Local)]', -- 作业类别
" s$ @' ` E' |/ b8 ?& } @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
& V& q3 L. T/ K; F9 J2 L3 T- i0 f @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
- y& K& L5 _0 `% @% ~# V- LGO
( h: e0 K* [8 w
' X' ^6 ]. [6 ]0 J-- 为作业添加一个步骤
! e5 x% l4 j- c6 i5 v2 c' nEXEC sp_add_jobstep
- \4 ?- \7 ^+ k @job_name = N'IncreaseUserCashJob', -- 作业名称
( ?$ N- Q: |% s9 p% |2 D @step_name = N'ExecuteStoredProcedure', -- 步骤名称6 ^4 G3 y- H7 n- f# V
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)9 o+ s: A' Z8 c: A
@database_name = N'account', -- 指定数据库名称) {3 ?1 `; U6 i: L
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
3 Q' ?0 \) `- I# I& I& x @retry_attempts = 5, -- 重试次数
+ }& J- y7 s6 l+ x4 [- d0 f @retry_interval = 5; -- 重试间隔(分钟)
& x, C! b0 b/ J+ B+ Z5 z. X: BGO: I) w* S/ L. l: ~% H7 Y
0 z9 d8 d1 O9 e. A) C: l/ r: A+ ~-- 为作业添加一个每分钟执行一次的调度
8 A Q0 |; q; G3 gEXEC sp_add_schedule $ R7 J; p E' \" u' r. |
@schedule_name = N'MinuteSchedule', -- 调度名称$ o; X" p( \" n, S4 ~
@freq_type = 4, -- 频率类型(4表示每日)
3 P' A$ L6 p% b( p* M @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
0 \( y! K7 p$ c& B5 m& [ @freq_subday_type = 4, -- 子日频率类型(4表示分钟)4 o& L5 O# F- M" E( Z; P
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
) X5 x3 g) N! q4 h u" P/ ~' p G @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)0 h' K+ P' Q ~6 y3 F J
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜); F' J% D; s) p. z2 `5 o
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
0 {" r# @' J1 n$ D5 ~- T } @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
: F4 ?: B7 \" o! \& f0 wGO
- C0 } x7 |& G0 u
5 s% P1 X6 g* z% M) `- B-- 将作业与调度关联起来
8 F: D+ y+ {' g; f) ?5 ~' nEXEC sp_attach_schedule
+ M$ u2 y J2 _* j: C @job_name = N'IncreaseUserCashJob', -- 作业名称: O. K1 _6 n, a$ D
@schedule_name = N'MinuteSchedule'; -- 调度名称
9 I a9 ~2 x% s; C7 nGO, B) X4 o3 k5 s z7 S, w
# j$ K& X8 m+ D+ N& c; N3 O- D-- 提交作业创建到SQL Server Agent
* n" z7 f, j1 uEXEC sp_add_jobserver 6 b* \' b0 B3 \, o# m* W
@job_name = N'IncreaseUserCashJob', -- 作业名称
! D9 R# I8 L; u, M" ?" d! Q! I @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')0 |4 V; }5 U' S0 h) x+ F
GO" A5 Z H1 {4 p3 A$ Q
# Q3 ?& N" o u! X
! o) Z. i: R0 R2 V/ @; }" U% y1 G9 u, Z/ P! N' x
! m! _4 p6 X. y. O- }9 O
% A% T: Z6 J% \2 N |
|