高级会员
- 积分
- 870
- 金钱
- 730
- 贡献
- 63
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
! N0 l4 j: i! o, Z& M q& ZUSE msdb;
$ O, a6 ~8 s, t' @# k3 vGO1 `2 {! q! }+ A) U# s: e
! {$ {( m5 d- s% k S9 A" e-- 如果作业已存在,则先删除它
, l0 b3 [9 Y. h kIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
, F1 n6 l6 A9 ]2 j( V6 b6 d EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';: m g z1 s4 v/ F
GO2 y2 b. x( h! }5 j j
% M9 @% e$ Y* M5 R/ j; ?-- 创建新的作业
9 a) L- A) v& Y2 BEXEC sp_add_job ; P" F& s {- z1 s/ |6 e3 K% |1 ~/ {
@job_name = N'IncreaseUserCashJob', -- 作业名称! J) W: l P' n, V- s2 W% a
@enabled = 1, -- 启用作业' q7 f$ i0 ?8 w5 O" r6 |
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
: I& e6 M1 p8 m' j @notify_level_email = 0, -- 不发送电子邮件通知
# W6 n% X1 b" r9 }* L; r @notify_level_netsend = 0, -- 不发送网络消息通知" c/ v3 |' n7 G, E4 e
@notify_level_page = 0, -- 不发送寻呼通知
+ U/ ?& ^9 O2 B9 i# ^7 x: [ @delete_level = 0, -- 不自动删除作业
2 n5 P2 X" m/ S- Q8 W) ?- {7 h @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
3 P' f3 J0 l2 R5 I7 _( f @category_name = N'[Uncategorized (Local)]', -- 作业类别
( F1 q+ t! U5 E9 b( B/ y @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)' v, i) h: L. B) B' b- m! H
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员; z# n/ g2 {% }/ j# d6 w
GO
) n3 Y) W. g& I8 [" a& |# L
( {4 E. R. I/ E5 f* C4 }-- 为作业添加一个步骤2 K* `$ V, G3 b. @
EXEC sp_add_jobstep 0 b- D/ V0 }" o" W8 _( @
@job_name = N'IncreaseUserCashJob', -- 作业名称6 t- D" ~4 u$ Q: G' P9 ?5 A
@step_name = N'ExecuteStoredProcedure', -- 步骤名称- Y' ]/ a0 O O
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
! _" ~$ Z6 `7 C: A$ e* z0 D2 t+ E @database_name = N'account', -- 指定数据库名称
$ \1 }$ J3 O# J3 T @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
4 w' j4 B) D4 e* r @retry_attempts = 5, -- 重试次数9 y ]2 [5 t6 z3 v5 K
@retry_interval = 5; -- 重试间隔(分钟)
J$ v3 f5 A7 O- @. gGO: W% X8 F' u# G6 F' w4 c1 K4 L! _
# {9 D8 c0 Q5 U! P+ b-- 为作业添加一个每分钟执行一次的调度
. H1 y3 [( _8 L/ eEXEC sp_add_schedule * `" Z# p. S, n# {! ^8 m$ w
@schedule_name = N'MinuteSchedule', -- 调度名称' _# t5 y: `1 b9 D6 w- Z/ A7 s
@freq_type = 4, -- 频率类型(4表示每日)5 ?5 U! h( A' O4 Q& \8 ?3 T3 o
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行: ?' h& Z! s# Z! I3 a/ Q* r
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
* Z# B/ p7 B5 K x5 ~' |" _ @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
8 _$ I: b, x+ E0 E* v @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
" j; z* q, C: Y: n7 J; E: v. ^5 f @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)9 O& V, U$ _( ?
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)3 L3 A3 U5 O. c8 i% C
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)' x: I( ]+ |9 {, [$ A
GO
2 J' Y {5 u& E1 t
- j4 S9 i5 l3 ~$ ^! b- @7 l-- 将作业与调度关联起来6 r3 d& u" V7 K. n4 B
EXEC sp_attach_schedule : [/ k8 K2 d1 t9 W8 J
@job_name = N'IncreaseUserCashJob', -- 作业名称
2 w3 Z$ w, [0 _* |, [3 p @schedule_name = N'MinuteSchedule'; -- 调度名称
$ D) r+ b" ], C! t9 lGO/ p1 P5 v1 T6 C, `
% r9 Q; Y9 D/ i$ m; L& T-- 提交作业创建到SQL Server Agent
3 t9 A0 Q1 Q% B1 V- REXEC sp_add_jobserver , B0 U" b" o* K, G& D8 b# o$ v: I
@job_name = N'IncreaseUserCashJob', -- 作业名称
( e3 w. e# R+ i- T h @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
! K7 U' X- ]/ x! `* i1 B1 TGO
u2 K# M9 I2 R9 X6 q0 s5 f- R2 S
: N4 c# X1 C2 _4 j. `6 K% w$ Y: V, @! n6 Z1 \
# j. m) `# U; e. Z7 n( h. N- p* g' b, G
|
|