高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
4 `0 O) Q* t" p- [, T/ GUSE msdb;: V( g: M+ G4 b0 d) M4 d" E8 E! }
GO6 P6 v+ @. Q: `1 M) [! `" ] x3 `
$ J& ]' G L: Y$ `) e3 K- g0 o-- 如果作业已存在,则先删除它& E7 @0 h/ c: o- V# b* d
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')! L- e! ]) Y/ d% e, S
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
. E! E" N8 s+ N2 @GO
( L9 i+ k2 x& H2 o5 s4 {/ N( U$ ~( l4 E* x, x! H$ K0 {
-- 创建新的作业
" x8 B# i% j0 n! M3 a5 AEXEC sp_add_job + |2 {& w" R' u+ e
@job_name = N'IncreaseUserCashJob', -- 作业名称
: |; h, [+ i# c/ u2 t8 m @enabled = 1, -- 启用作业% I7 }1 ` C/ m \1 z. a
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改0 T; j0 ^# n) _
@notify_level_email = 0, -- 不发送电子邮件通知
$ N4 p- W, I8 G6 ~) v* Y2 o* F' I, X: ~ @notify_level_netsend = 0, -- 不发送网络消息通知
6 Q* K( p7 Z+ Z4 d. [2 ]% x @notify_level_page = 0, -- 不发送寻呼通知4 q4 E6 \" @+ i+ _: k- k
@delete_level = 0, -- 不自动删除作业
5 `+ `9 J7 Y3 c. n4 c$ Z' p) i O @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
2 p2 O3 D q$ |- v" V: U @category_name = N'[Uncategorized (Local)]', -- 作业类别
6 u/ _4 G6 B! d+ R! R @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名); g/ N/ k# p1 V6 H$ r, X6 N/ f
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员& O5 l0 V0 J5 O' S" h/ T3 h& L
GO% h% W2 g+ a' s0 E
& y/ b$ s0 d2 P( Z# G6 e- } Q s z-- 为作业添加一个步骤
0 x" A& `7 D; |* p9 YEXEC sp_add_jobstep
/ W9 L8 K9 r) G3 l3 B @job_name = N'IncreaseUserCashJob', -- 作业名称9 k+ q1 _8 e, q+ Y3 k
@step_name = N'ExecuteStoredProcedure', -- 步骤名称8 R& X! d/ D2 R5 j: @
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL) G% b" E4 c! U% S! d9 I' J
@database_name = N'account', -- 指定数据库名称3 f7 c* ^" N% s4 b k. ~8 s& ]
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
- s4 K+ D5 ?) J5 _ @retry_attempts = 5, -- 重试次数5 d7 q9 a8 e* i9 d/ Q9 b4 y) Y# s" g
@retry_interval = 5; -- 重试间隔(分钟)1 n1 Z7 m) O7 _3 [" f- P& d4 s7 \
GO" c1 h6 L& P! \1 Q) E D
0 W: F u; t, E/ ]; b* r
-- 为作业添加一个每分钟执行一次的调度
: _$ {( R' K4 Q, ?2 dEXEC sp_add_schedule
% n5 S) n0 N! d9 j. k, S @schedule_name = N'MinuteSchedule', -- 调度名称
L& l4 s' Z8 a& Z; d @freq_type = 4, -- 频率类型(4表示每日)( @& |; ?0 `8 [; o4 v( g- a% O
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行7 o4 ]* d0 H# k: F4 P
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
7 H8 p6 B/ X% B" k- P @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)) n: O& p4 `2 D0 A( h! i
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
& z6 @4 j8 ^3 j9 l @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
1 z$ v7 k2 O# L' n! W @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
+ h+ I9 O* d% y8 l3 n1 Y @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
6 `2 G7 w* P+ r6 Q" ]4 mGO
5 L+ h# i% K$ f, y# h+ W
* M5 l2 G) L5 l. ~" @# x5 d; H* i-- 将作业与调度关联起来- v: ?* Q- {+ ]! }3 L/ f
EXEC sp_attach_schedule
4 r& i. @4 `# t @job_name = N'IncreaseUserCashJob', -- 作业名称. B( T' A+ T3 x/ S8 Z7 H
@schedule_name = N'MinuteSchedule'; -- 调度名称( ?) W% r4 }+ x0 d* @- M
GO1 N! b& W% y8 y7 x' K: u! |+ V
3 Z/ ^9 i! v' b" u
-- 提交作业创建到SQL Server Agent+ r3 I' E; m3 P, x( t+ S% r# o
EXEC sp_add_jobserver
" |% G/ i) R6 e* W- } @job_name = N'IncreaseUserCashJob', -- 作业名称
/ X4 Y% n0 n6 v, r P/ y @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')7 D7 C3 W/ {+ @4 o- K
GO3 F( l& N# ~5 y" a, |5 h' P, R
4 Z. J6 W U0 P3 _$ ]3 R; N
8 f5 b0 e6 m4 s
1 s- J3 I( k- D( Z* Q2 o* f8 S. |. h2 ]% y: c, H# w
8 t! D! c3 C, x3 t2 ~& ]$ p |
|