高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------2 o. N& r' }# u% U$ H
USE msdb;
3 w* d& v3 e' mGO% Z( |4 M- k# _- |
/ V5 z, ?1 ~& t- t: I# |, G2 n4 `& \-- 如果作业已存在,则先删除它
3 A* ^ X9 d: AIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')0 E# a4 O' M% s
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';; O& u# X2 L7 J. ^, S* x4 h9 T
GO
5 | T7 i9 m& }$ n2 ~: T% V7 N
- s3 E1 O+ ]- @: U-- 创建新的作业, M- s7 h& f+ h8 I& g& G
EXEC sp_add_job
/ r4 @: ?% Z y0 d- ~ @job_name = N'IncreaseUserCashJob', -- 作业名称
9 k0 j5 S% t& j' q9 f @enabled = 1, -- 启用作业
, _$ e: X5 h& S* G @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改0 q6 k: u; s" W( Q# G3 ]( M
@notify_level_email = 0, -- 不发送电子邮件通知
7 R8 U/ c7 p' M0 L& U# v" A' f @notify_level_netsend = 0, -- 不发送网络消息通知0 [5 J J: u9 g
@notify_level_page = 0, -- 不发送寻呼通知$ C/ p6 ^/ I; y8 a4 m0 h9 ?
@delete_level = 0, -- 不自动删除作业- g1 S/ x$ d U
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述7 M8 x" i/ D1 I
@category_name = N'[Uncategorized (Local)]', -- 作业类别
1 \9 `+ j8 p& j( M @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
: n( p. n( _) e4 _ @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
7 v) h& x! y( [. p6 v N( uGO
: H# [ q( E/ b* Y- U# g6 d% D% B' B; F! X3 F- \
-- 为作业添加一个步骤- e# r' T; r( C/ T' ?" D V7 r
EXEC sp_add_jobstep ' U7 q! Q6 |5 U2 e
@job_name = N'IncreaseUserCashJob', -- 作业名称
, x- |) m4 Q# O& F @step_name = N'ExecuteStoredProcedure', -- 步骤名称2 u6 w6 O4 ?1 x$ g1 \
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
" q0 _" B2 t3 e7 o! j2 W" O& G @database_name = N'account', -- 指定数据库名称
6 U4 {- g! C' \$ B* v @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
8 } x5 e. N: X9 Q @retry_attempts = 5, -- 重试次数' Y0 P, u5 _" C/ x
@retry_interval = 5; -- 重试间隔(分钟)2 v% l n4 P2 m
GO
5 y0 U; F# Q5 k) N+ [7 Y P1 K4 ~* R7 a
-- 为作业添加一个每分钟执行一次的调度
2 X( i1 }6 A5 [" \- l6 SEXEC sp_add_schedule 7 P, c6 N8 S3 a" x V/ n: M
@schedule_name = N'MinuteSchedule', -- 调度名称& r2 j J- U7 h1 l
@freq_type = 4, -- 频率类型(4表示每日)
0 _5 D, o" D& A1 S- N3 p @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行0 `/ h4 `% X* n( ]
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)3 w% f! S* K+ I: D- W/ o2 ^
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
/ ~; k) [" ^! d& x! {' W' F' U0 N @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
) J. m6 a6 q0 G% Y( k+ \ @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)2 D* Z% ^0 s) ?, A0 s3 t
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)1 ]7 G" ?! S* r( O ^; p
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)8 T M* b) X2 p3 V4 `; F9 z% }/ e- W- i
GO
8 a' w! Z! n7 i" x7 V! t& Y) |* ?, B/ s5 |1 A8 x) ?
-- 将作业与调度关联起来
' | w* [# D* H, gEXEC sp_attach_schedule
9 x% D6 b! N- N, I @job_name = N'IncreaseUserCashJob', -- 作业名称- {' q/ o; k$ A# S8 }
@schedule_name = N'MinuteSchedule'; -- 调度名称) S1 ^0 n5 S0 S5 A& ^% |
GO4 v' k8 G. i& F7 p. ?
2 F; K9 P+ z2 Y-- 提交作业创建到SQL Server Agent
0 Y: p4 Q5 e5 Y9 ]) b& S: \& X+ GEXEC sp_add_jobserver
) \: R2 X- L# ~# }; h" x* x @job_name = N'IncreaseUserCashJob', -- 作业名称
Z! `# m0 [; w, [4 T3 x @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')9 g* N3 Y& ^9 |- L
GO- \/ N' C0 |1 R; s, R
( k! I( b/ L; @; v m& J; F
. B( Q7 b/ W: G8 s* B9 w. i/ i- N* \3 Y
5 `7 o3 Z$ L" d) ?. p! w9 R
; l- N* G Y+ f3 G, ?+ A T5 L# s |
|