高级会员
- 积分
- 707
- 金钱
- 582
- 贡献
- 50
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
- k6 n: v, \8 a. M0 C2 {USE msdb;% I& \# p, k0 m* K5 R. Z- L! `( x
GO1 K" n6 n! G" [ L
; p# E+ Q" y. m' J) A-- 如果作业已存在,则先删除它
$ q* P! R0 P4 Y0 B1 n" h3 Y9 bIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
' i0 G" R8 [1 V& q EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';4 J5 ^/ S3 c p+ u: w0 k, \
GO5 p5 E9 Q; ]4 i- C
& Y4 P5 \3 O8 `! n" ~
-- 创建新的作业
5 i" Y$ O( z" N% o) T, QEXEC sp_add_job
; Q- M1 I6 O# G8 A H- q3 \9 f# d @job_name = N'IncreaseUserCashJob', -- 作业名称/ K; o- t8 t% m e: w
@enabled = 1, -- 启用作业
8 {1 ~3 o, ]# m' k! ^" z8 M @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
% T7 n8 E* C: i" `6 y& f7 Q @notify_level_email = 0, -- 不发送电子邮件通知$ W W' ^" [, F
@notify_level_netsend = 0, -- 不发送网络消息通知/ m. m& I+ t& b6 d
@notify_level_page = 0, -- 不发送寻呼通知8 P6 {! ]4 j# ]
@delete_level = 0, -- 不自动删除作业: n3 \) m3 o( }9 @
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述) A1 O& Y5 b9 q5 Z u( l& k
@category_name = N'[Uncategorized (Local)]', -- 作业类别$ W2 e# |7 ]2 V, `! h1 G: {2 Z
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
1 s! B) | V. E: ^ @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
) a F+ b8 E' l- [1 @GO
, ]1 d, [$ }) m1 i$ e* N$ {/ Z, c" k6 v' o2 j' s
-- 为作业添加一个步骤
8 J" X9 V. |& T4 z- \- f7 J6 Y& U- o, QEXEC sp_add_jobstep
+ m9 e9 q" Z$ W* m4 r @job_name = N'IncreaseUserCashJob', -- 作业名称
6 { g" N: @7 P- ~; c8 [ @step_name = N'ExecuteStoredProcedure', -- 步骤名称
* f5 m% W1 I* {0 I @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
* U# h4 h) |$ d2 G! t) O2 L5 P @database_name = N'account', -- 指定数据库名称8 |2 E4 c' _5 C9 x$ E6 f5 [
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)" q7 |% }- D! Q. S
@retry_attempts = 5, -- 重试次数 w7 E- q( O' }' M/ [0 _; D" f
@retry_interval = 5; -- 重试间隔(分钟)
2 m% u! a# s4 g5 O) ?GO
: t k" S, f0 `$ E3 l$ k$ l+ E9 \, K- x
-- 为作业添加一个每分钟执行一次的调度# n. n d3 s' J! S0 s
EXEC sp_add_schedule ! q5 ?. v7 A' ~( `$ Q/ D
@schedule_name = N'MinuteSchedule', -- 调度名称" m Y+ l4 i0 z3 i; C
@freq_type = 4, -- 频率类型(4表示每日)) W" N5 u0 U: x: A5 e; d8 r. d
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行' Q& @2 m6 c6 C, i7 W
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
2 d0 s# w/ M% U. p! e$ h @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)+ N6 Q+ I/ S5 o
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
: K/ u4 w( f9 N W5 } @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜): M5 N2 q1 N* X0 k
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
0 I' k8 i/ s# p5 j6 }# ] @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)# l u9 d+ J% `" x
GO+ m0 u2 R2 h' o' d6 ]$ h
; `# i ?6 |3 o. d! I6 o W1 [-- 将作业与调度关联起来
7 x- B5 C& q x4 {EXEC sp_attach_schedule $ m5 \6 M9 i) ` I& x
@job_name = N'IncreaseUserCashJob', -- 作业名称
. |' }4 ?! n$ u. j1 T8 w @schedule_name = N'MinuteSchedule'; -- 调度名称
6 B4 H; @' s! j9 ]5 a* XGO
( I0 B0 x& X9 C' |9 V0 b! Y+ F/ Q) J* z
-- 提交作业创建到SQL Server Agent
$ q8 L2 F' N; z1 m* F' _EXEC sp_add_jobserver 1 @4 V% e' v( |
@job_name = N'IncreaseUserCashJob', -- 作业名称1 O/ a1 ]0 o. S/ `* |1 |, h9 v9 u
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
* N! s4 V4 N9 k$ r3 hGO2 @2 J! `0 \& E6 u& ~
& l) [+ X5 M7 C( O: [
3 [. m3 A9 O7 W8 M9 B! A& d" }( U K) j
7 v" _% L" t; |2 y
# R# N- \) A* N R+ m& }4 G+ d |
|