高级会员
- 积分
- 744
- 金钱
- 613
- 贡献
- 55
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
* s2 ?& [3 _" ?. F1 UUSE msdb;
1 K" ^) ~, `+ S' M8 [: EGO
( m; }6 J1 |0 S `: v. a4 ^9 ?
-- 如果作业已存在,则先删除它
" z1 Y, B# Q) P2 |$ {IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
\" A4 ~8 ]+ n: M4 ]- @; S EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
3 w; ~' u) D# u$ _8 D5 EGO
5 o9 B' u( p, G6 L! B0 g: x$ `. A" r& m* Y! ?( \
-- 创建新的作业7 z' U4 Q. S% k$ l) U% [
EXEC sp_add_job
) P+ Q. V5 U# e4 O8 m# X5 L @job_name = N'IncreaseUserCashJob', -- 作业名称; J* N. L$ Q& x( R" F
@enabled = 1, -- 启用作业
y [) m2 E- u. r @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
' @* Z! b A5 Y+ F3 Q2 H @notify_level_email = 0, -- 不发送电子邮件通知4 _2 s% U' m1 R; m6 X$ `2 o( r
@notify_level_netsend = 0, -- 不发送网络消息通知" @ p$ f' H" [& o. n* z
@notify_level_page = 0, -- 不发送寻呼通知, S' \- `& R0 V$ o% L' x' q
@delete_level = 0, -- 不自动删除作业2 S0 G2 h$ N" K% C. B* }; W! K2 q
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
1 }7 o, ?" Y- n2 D @category_name = N'[Uncategorized (Local)]', -- 作业类别! B+ K' A: j0 [' o9 O0 G! K' t7 o
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
1 D A3 x3 G" u" u6 b, N6 U @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员) K) x# M/ O9 [' o/ {
GO
' q) o; p4 ~& b0 y
6 a6 `; S! V3 o" G( i" n' w-- 为作业添加一个步骤 V$ R# _- p6 E
EXEC sp_add_jobstep & R- N4 R5 ~! g9 R7 {1 [0 U V4 z
@job_name = N'IncreaseUserCashJob', -- 作业名称. Y9 v$ R! m7 X* x9 n: Q- S6 ~
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
& G [/ U6 |/ J2 l @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)9 |) d, S2 r% z+ o
@database_name = N'account', -- 指定数据库名称
8 a) p+ B) Q" `, T8 A @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
, y3 f# T# O" h, x3 p- g1 x @retry_attempts = 5, -- 重试次数. N1 r/ @1 ~/ J$ A+ { v
@retry_interval = 5; -- 重试间隔(分钟)7 w$ Z% t/ B$ Y) O" C
GO8 [8 ^$ ^ m7 M, d1 R' E/ \! S
7 F; R+ C$ ]6 n" l% A-- 为作业添加一个每分钟执行一次的调度$ Y* K6 L. M% b3 @8 k" g
EXEC sp_add_schedule - N7 O! [" ?, r1 l3 I/ Z) C8 Q
@schedule_name = N'MinuteSchedule', -- 调度名称
, F: y" F2 A5 t @freq_type = 4, -- 频率类型(4表示每日)7 ^0 }' b1 h7 d& i
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行) c" l. m% b8 w2 ^) L
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
8 p9 r$ a" C: @ @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
7 P* p; m6 L% H8 b% J @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
* t o1 v5 t1 F9 ]5 ], g @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)& Z3 u" o" r- _5 O- a- M. i& X
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)/ h# p+ |5 P/ ~- N' ~
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
. Y8 ~# U1 n( a a. E) BGO/ O& `3 D2 m6 R% T# y' P
5 j4 ]$ D/ u/ t) U" _-- 将作业与调度关联起来
h+ J# c; r* Q; v8 P+ c% z( ^EXEC sp_attach_schedule
: c+ @ t" v) u% g( f3 L0 i0 @8 W @job_name = N'IncreaseUserCashJob', -- 作业名称
3 C4 P& n7 \' m0 R1 R% c @schedule_name = N'MinuteSchedule'; -- 调度名称
9 e% h G1 ?9 q$ O, D$ tGO
}* z# A* U' w% e, D& N# c& v( b
) ]4 u) w& V Q1 k y1 D4 f-- 提交作业创建到SQL Server Agent
2 ?% X8 A$ k, v, R! ^/ O! F* FEXEC sp_add_jobserver v8 x- l0 H L6 n
@job_name = N'IncreaseUserCashJob', -- 作业名称
$ ?" I& K3 l- q2 T; h# X5 i" E @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')) F( K/ t; b* f4 l5 ?+ s6 c
GO4 S3 N$ o6 c, q5 ^; ~
" l7 n% g3 I0 c# |
; s) k" [6 b: p2 k( l7 c/ V
; t% v# k$ }9 ` K6 c
2 g4 h+ P* h, v R) y. e( Q% y
( ^3 s! f# v+ J6 q |
|