高级会员
- 积分
- 891
- 金钱
- 742
- 贡献
- 72
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------3 Z+ j! ^5 `) f [7 k. e* r3 G
USE msdb;7 ]5 W6 w9 D! f
GO
* H% G% k' k3 z% D/ i. H. W5 [! T2 B0 S" M [, }9 t9 A1 W
-- 如果作业已存在,则先删除它
2 R9 \) z& f' [0 SIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob'). I" l0 V# g, x0 z
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';% g" H* I- c' ]0 ^: r
GO
4 ^% `# j6 a* q# e0 V# j3 z5 ^" @& ~% }5 F* Q
-- 创建新的作业
# [' n+ h& O: REXEC sp_add_job 3 O: U2 d1 p' [2 n& d' a
@job_name = N'IncreaseUserCashJob', -- 作业名称- ~2 {# F5 V5 T& B) b* q1 P* W
@enabled = 1, -- 启用作业& d' h- A' N6 f9 f: l' H
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
1 v) z4 J+ p) _" X+ G: l+ b @notify_level_email = 0, -- 不发送电子邮件通知
( X J9 @- h! u: x- b& i; y$ @7 E @notify_level_netsend = 0, -- 不发送网络消息通知7 ^! P% f; w3 Z
@notify_level_page = 0, -- 不发送寻呼通知$ k: c$ U! x# L0 ~1 d
@delete_level = 0, -- 不自动删除作业+ e' K% `1 a" k8 m1 U, ^
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述' s4 p' k7 n5 [5 K: X: I' q) w
@category_name = N'[Uncategorized (Local)]', -- 作业类别$ D1 F0 q' S/ T N9 I. V2 h/ J4 \
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)0 x/ a6 w3 c9 q0 O
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
% l- ], |* s% ~GO
% |5 {1 Y3 s! h: r4 M6 k" j
/ v# v u. R. @-- 为作业添加一个步骤8 U- b# x2 y1 h: Y& M" E, T2 |; h" h3 D
EXEC sp_add_jobstep ' F! `- ]& \4 E6 ~
@job_name = N'IncreaseUserCashJob', -- 作业名称/ g. b6 k/ M4 j% e/ _; |- @5 H
@step_name = N'ExecuteStoredProcedure', -- 步骤名称# ^* a% p% ^! v
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
" f7 X0 F4 F( l; Q/ T: _ @database_name = N'account', -- 指定数据库名称, O f2 Z" `' V# Z* H& X9 B
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
+ A# F$ M2 t n$ u @retry_attempts = 5, -- 重试次数
8 a8 ]1 d1 N& W& Y( @. |" s H @retry_interval = 5; -- 重试间隔(分钟)
5 x ?0 h- X2 P- g: j$ GGO
, u0 |* p" L2 p; A" B, n5 B# \7 x
-- 为作业添加一个每分钟执行一次的调度
& M U% D: ?* ]9 n$ [- ^- C: K" eEXEC sp_add_schedule
" J& y) a6 V+ r, \ @schedule_name = N'MinuteSchedule', -- 调度名称" u/ g0 ?. c7 p' B7 L; u+ N
@freq_type = 4, -- 频率类型(4表示每日)% u- Y& \* E" k
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
" k) v; u" ^7 b6 U* ] @freq_subday_type = 4, -- 子日频率类型(4表示分钟). k# I& ]( A+ y6 E# R5 N, M; J0 B
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)9 w) I) U; w% e# ^. \- m* R( s
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
3 Y5 p. a. o/ l7 { @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)9 r( T) c7 {- p/ m4 `6 q* L. r
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
* C, Y% Q# K7 Z: f6 j G: q @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟), Z9 P; W( q1 Z" ^: P8 A, ~1 `/ k0 ^
GO
: q* j1 s' _8 e6 \2 P, j$ d1 }: f1 o- ], z8 m5 {
-- 将作业与调度关联起来
t1 ]& P5 z( N F/ M5 CEXEC sp_attach_schedule 5 x \0 C p/ L
@job_name = N'IncreaseUserCashJob', -- 作业名称
0 ^) N7 e+ L: D; S3 n4 N) `- e0 p @schedule_name = N'MinuteSchedule'; -- 调度名称
4 ]# t6 ]" i% c9 h$ @. d2 e6 DGO
- B6 L8 y0 Y1 {; k6 l5 w2 @# P ^) F7 \# m! j K3 X6 O
-- 提交作业创建到SQL Server Agent7 F: ] Z K4 M9 ^/ q
EXEC sp_add_jobserver 0 G7 ]4 w2 Z- D5 W5 X
@job_name = N'IncreaseUserCashJob', -- 作业名称
- c2 l$ U* X$ n- h @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)'); C; y4 v( J [0 M
GO1 S: [6 T" j# _, M$ @. m
, m; v7 f+ o; R% w! z. S6 S
3 F$ G& R' y, `2 k- v& B
% e ~8 y' @0 M, P* k5 m" p1 a3 @/ S/ c, m1 }/ e
( {4 q+ G1 {9 s
|
|