高级会员
- 积分
- 891
- 金钱
- 742
- 贡献
- 72
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
. f" U6 m3 w3 H: }" w: EUSE msdb;
' j# \' ~& f5 u% S1 x+ a4 ZGO1 w) x+ A" X6 R% h& K# t
# C6 _/ {& P r* S
-- 如果作业已存在,则先删除它
8 L @- r7 e0 E7 c* d0 n/ F( bIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
, I2 D$ T3 w0 L0 K EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
$ { S* \, {+ ?/ v: N& ~2 y. CGO
7 E+ P) X! G9 h9 t) T! @$ f
. q; G* t( \( a5 p: j" |9 K" u, b-- 创建新的作业
. h% i0 G6 ~- ` i; QEXEC sp_add_job + P: r) Z2 W3 d: n+ m# X' V
@job_name = N'IncreaseUserCashJob', -- 作业名称( l' T" s4 `+ i" s8 r8 n* q3 N& }6 }
@enabled = 1, -- 启用作业' U2 ^$ |, m( N7 K
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改- D5 I0 I! e. ~( q% Z% @ U
@notify_level_email = 0, -- 不发送电子邮件通知+ h3 U8 v- P0 E4 [. f7 O
@notify_level_netsend = 0, -- 不发送网络消息通知9 d( _3 T5 g; e/ X: ~2 N
@notify_level_page = 0, -- 不发送寻呼通知9 e9 z X" u- ]/ [
@delete_level = 0, -- 不自动删除作业0 r5 h, _2 I: Q) {% v7 i4 y- O
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
u$ l$ i3 y# E P' E; [ @category_name = N'[Uncategorized (Local)]', -- 作业类别
3 v/ K3 u9 w+ B' Y) ?" M, t @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
4 b) A% ^7 G5 e @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
2 X) n) v( u' p, O2 aGO" M9 [; L2 Y. J# @# O7 M
' H& n; p2 z) o9 W6 g8 ~
-- 为作业添加一个步骤
/ B z0 ~! X5 c% ?EXEC sp_add_jobstep
& }' A- `& l+ o* b' }6 K7 `. x @job_name = N'IncreaseUserCashJob', -- 作业名称
* z- z* |# J1 F p6 G) {6 ~ @step_name = N'ExecuteStoredProcedure', -- 步骤名称7 c2 y" R+ g2 L+ S4 k+ V8 H4 P9 n
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)0 j# ]1 W' h$ J' R! T1 ?" E
@database_name = N'account', -- 指定数据库名称
. @' g- H, }' ` N% t @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)0 c6 Y! S- ~* ^' q4 [/ T
@retry_attempts = 5, -- 重试次数
# S) y; J! ]8 A2 I! Z { @retry_interval = 5; -- 重试间隔(分钟)
0 W# N1 v! Q, bGO+ Z$ a1 s/ y# ~( f I+ l/ F- x
! w0 y% e6 w4 |-- 为作业添加一个每分钟执行一次的调度
$ G3 G2 Z- o" E, M( @EXEC sp_add_schedule
) c. H; L+ F# Z- |% g/ V' x& I. u4 S @schedule_name = N'MinuteSchedule', -- 调度名称
& W, c0 ~* V6 W5 y& W @freq_type = 4, -- 频率类型(4表示每日)
4 ~/ N) t5 J. _% _- B/ i' L/ m @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
# ~; K' s, s' @ @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
4 }+ g# A, l0 F8 V8 l2 Q ]1 B# V @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次): T$ ], z- u) M. E! \4 e$ u
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
/ P% z1 {$ x, q# X7 o# [, T2 K @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜), L2 t" i7 }' T$ z
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)- b( P& M( ~& p, l" k( N' f5 B$ W: i" o
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟), @% t3 {- B0 B3 j6 B; f
GO( d* P4 P( y- P7 _( G5 ]: _' ?' j. b7 J, T
9 @0 l) v( [# C-- 将作业与调度关联起来% q0 {( K4 [% \3 @
EXEC sp_attach_schedule
, @' t Y( ]1 e6 ~# e" ] @job_name = N'IncreaseUserCashJob', -- 作业名称3 d9 M5 I5 N! r3 S7 j8 E ?; M- |5 S3 N
@schedule_name = N'MinuteSchedule'; -- 调度名称2 Y/ I% Z7 E& z% e' I' K" O
GO2 T# k9 x1 M* p) a2 z9 ^7 p) \
* J, w6 ]) a5 Z-- 提交作业创建到SQL Server Agent
* a! ^# v& }( CEXEC sp_add_jobserver
+ ` [1 L( W% Z @job_name = N'IncreaseUserCashJob', -- 作业名称4 @( o+ [# @* y7 C7 r4 p
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')3 U# {) ~8 j4 H' s& d8 N' m
GO( ^3 c7 J3 |# Y" d6 T
3 r! t/ F, j" j: f* I1 r/ p# x# P7 D( o& o" B" G
0 L) b! s. L" k6 r( n$ r- v% K& g: T2 F; A: t$ v
, c( N9 ^; I; p3 D
|
|