高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------( T- s& F/ H! \( A) j) N
USE msdb;
! e$ v; p2 E$ }/ }GO
9 F& H3 i4 K) Z. j7 E9 E* t* w9 C9 d; p; b
-- 如果作业已存在,则先删除它
0 F a3 E) j- ?6 Q- f; n* _IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob'), L2 W% I' K; G9 }+ i ~+ y
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';, Q; u+ X/ Z% a0 `: Y) p6 c
GO% g* ]$ Y4 s4 U* s, P) m/ r3 \7 l( f
. t# Z) z: \4 G7 e. w: c
-- 创建新的作业. v, N4 O: z1 B1 `: t& B
EXEC sp_add_job , l' K* n0 B* V
@job_name = N'IncreaseUserCashJob', -- 作业名称( R1 s5 b1 h( @
@enabled = 1, -- 启用作业
9 _- y9 x( v" {. F, @! Z9 F @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
/ y! j' s- g8 d Z* } @notify_level_email = 0, -- 不发送电子邮件通知
" l' }3 o4 A% ^. X: M @notify_level_netsend = 0, -- 不发送网络消息通知
, T- A0 c( q6 f: g. C$ D- ] @notify_level_page = 0, -- 不发送寻呼通知
5 V- U+ E$ b$ B @delete_level = 0, -- 不自动删除作业) b# n" h m3 q
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
5 J" y# G. F8 @$ P! @# N0 v4 Y @category_name = N'[Uncategorized (Local)]', -- 作业类别# R3 p( X3 C3 _! W+ j- y. L- o& d
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
( T* `3 Q$ `; w; \) B @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
6 ^9 i9 ^* ?" \" u' }; O6 X9 O3 zGO W: D5 \+ R2 u8 M( p/ f8 `+ \
0 @8 e/ }/ K" U
-- 为作业添加一个步骤
# J% |1 U) @& l* }) a, Y3 ZEXEC sp_add_jobstep 8 K1 S- @4 W( G6 E+ Z8 G4 b
@job_name = N'IncreaseUserCashJob', -- 作业名称# B+ g6 [7 ] P% Q7 r8 [! Z# S
@step_name = N'ExecuteStoredProcedure', -- 步骤名称- b' j B, d) |$ d5 w
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
/ H( m) m+ f9 O+ @" G& d @database_name = N'account', -- 指定数据库名称' e) `+ Q' b( T+ {1 o* {5 r
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
4 @% @, l' V P* R @retry_attempts = 5, -- 重试次数
+ m) m: `, E: C2 _2 I. X) q7 [ @retry_interval = 5; -- 重试间隔(分钟)/ L" C4 E4 \1 j& Y# O! G
GO$ A7 \1 W- r# j$ c8 H
) X' V9 T; K# `: }+ x9 U" z; j' Z: ^-- 为作业添加一个每分钟执行一次的调度
; X6 x. v6 [! y' \" e' K; JEXEC sp_add_schedule
% ~: _! S# \5 b; X$ ?& M @schedule_name = N'MinuteSchedule', -- 调度名称* Y, \6 q* ~, v! g% q5 q
@freq_type = 4, -- 频率类型(4表示每日)$ N% d" n0 f+ Q- Q, w
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行! i7 x# c% y+ L4 b" O
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
$ \( R% s4 x1 A9 f8 S3 L, b @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)/ _$ s3 G- h! z# j
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
8 d! D" T* P) `% `5 A Q8 M' p @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
# M+ L( ?* }% U1 q) ` K" z @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)+ B& {( ]( V# s* a; w- a
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
1 x- B6 _ Y* K/ yGO8 \ Z+ e9 K: j3 X
0 |- o) k$ Y" S8 N& b/ |& q-- 将作业与调度关联起来
$ I+ V) h7 I5 D% V5 ~EXEC sp_attach_schedule
, e/ x. t. T; F6 L% {1 P- _, a: t @job_name = N'IncreaseUserCashJob', -- 作业名称* H0 H( e( G4 p5 Z [* o
@schedule_name = N'MinuteSchedule'; -- 调度名称
0 \: H; V2 D- e9 m- XGO+ {7 v% {# j1 X( j
3 Q& R, Q. W' T6 ^
-- 提交作业创建到SQL Server Agent& Y, g! P0 c- H" D- |
EXEC sp_add_jobserver P+ J1 q9 v. V9 X
@job_name = N'IncreaseUserCashJob', -- 作业名称
* l5 O u- e2 Z D( E) n @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
& Z) n# H( c: wGO
! g | F- I$ Q0 I9 y8 d7 a' c6 H& h9 d/ l! u
2 e1 ` @, R! O& b; U
# g: ~4 F* R' U% J7 y* p" Z$ q8 y u O$ a u! X+ J! y
' M: J/ h' x4 s% q |
|