高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
' `# _9 _+ n" X8 [3 pUSE msdb;
0 R# K/ u, i; a: t: g( VGO% E9 H( T& ]' z0 J% i; I; E
6 J2 d( P4 N+ ], [0 o y& w M* ]-- 如果作业已存在,则先删除它
( p* r; |( k! G+ R) ^! @IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
; Y7 b9 k# v) b6 t* w5 W0 P, i EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
6 }# k) V. K" r8 U+ PGO
: S) a: i/ D" V* w+ B @! B9 N1 }/ U' v' C0 R
-- 创建新的作业
) M }+ p( l6 IEXEC sp_add_job
4 j1 `5 h" j9 O4 \6 ?& z @job_name = N'IncreaseUserCashJob', -- 作业名称
9 y* ^% p/ L: u7 {% [9 ` @enabled = 1, -- 启用作业* ?% e q3 J1 S) G
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
; z4 v% l* b$ p' x5 c+ b4 r @notify_level_email = 0, -- 不发送电子邮件通知
% u3 `1 Z& f8 a% L6 m" m4 N' Z @notify_level_netsend = 0, -- 不发送网络消息通知
# j4 [% ~ N0 u9 x; n; x4 R @notify_level_page = 0, -- 不发送寻呼通知# q* z) K- w/ J8 p* _, s. D
@delete_level = 0, -- 不自动删除作业' ?* _1 G: R c$ g; G6 m5 E7 ^
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述3 L) B1 |' s5 l/ ~7 e0 D: e# z
@category_name = N'[Uncategorized (Local)]', -- 作业类别
# Z$ g J A2 u) O& I @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)0 @: }1 H& u4 D
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员5 a8 A0 C# U! E- E* n, B
GO: N2 q! m4 I3 C- W8 W, X
4 \7 B: g: M3 b-- 为作业添加一个步骤& h0 a9 X; m, Q& G/ b
EXEC sp_add_jobstep 1 [7 C, l* O: [7 q' ?" h$ s
@job_name = N'IncreaseUserCashJob', -- 作业名称% K$ `) S( d/ s7 ^0 ?' C9 l
@step_name = N'ExecuteStoredProcedure', -- 步骤名称7 I0 N/ A7 @0 H9 r: s. `
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
8 k1 @9 e* t0 h5 V+ ^ @database_name = N'account', -- 指定数据库名称
. s) X, [" u/ P" u4 a @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)3 @/ D: U! z; K2 L+ C) O: k
@retry_attempts = 5, -- 重试次数" m- X$ o. Z+ U% x
@retry_interval = 5; -- 重试间隔(分钟)8 s$ ?1 q" }" e$ ~- O
GO
, J9 S2 \ E2 j2 n; T9 H# f& Q
3 U$ F8 v9 ^, F4 r4 R' M-- 为作业添加一个每分钟执行一次的调度! c. n. ~0 v, E, h
EXEC sp_add_schedule 1 \$ I6 Y/ k: {6 B) S- m& L
@schedule_name = N'MinuteSchedule', -- 调度名称9 s" D/ K. w7 ^: T5 b
@freq_type = 4, -- 频率类型(4表示每日)7 f, v' F3 D! l5 M, E
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行8 W& _2 b b/ D: h- y/ ]9 x2 \: C
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)) `/ y; s$ X( b6 j, s( L0 L8 ?
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
" C o1 {1 A4 N# E; F3 f+ Z2 ] @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
) h/ ^$ {( y# K! S1 O7 E$ T @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)8 t6 B6 u% d' u ~9 H
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)8 C2 E3 N% l+ m# d
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)8 B, U- N- t' z+ i. V
GO
( A2 ^$ n1 X. g1 S
5 n- w0 z9 W3 ?-- 将作业与调度关联起来
; P$ C% R' Q& n: b% YEXEC sp_attach_schedule ) T( t. J _0 [! C0 ]
@job_name = N'IncreaseUserCashJob', -- 作业名称$ x3 A1 c, T7 N9 U9 M t
@schedule_name = N'MinuteSchedule'; -- 调度名称
! z) @7 Y& @5 \& m# ~6 u2 N2 @GO" ~% J6 X$ I! g- c
1 v- K8 x" y% P: N; L" M
-- 提交作业创建到SQL Server Agent
( A7 t7 _' O1 H! E1 n4 pEXEC sp_add_jobserver % D4 G# j9 o7 Y0 U
@job_name = N'IncreaseUserCashJob', -- 作业名称
4 u$ C5 e, X' p: j. ~3 z' C/ A @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')+ t6 {1 T b: h' B; ?$ x, ?3 s. V$ x
GO$ P% F$ J$ F( w- X+ K4 R/ H
9 y1 u3 g4 L) k% K
8 h- m" j+ m0 G8 f# |! s; d, u8 l/ J3 Z$ J7 V" m8 ]% u
) j& q, M. D) w1 u; }6 r4 B) ^5 ~4 u& [9 v- _
|
|