高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------9 @/ B2 Y! F8 O, O$ W2 C
USE msdb;
5 ], J3 o8 q: U% g- c) AGO
! ^& z) k, w1 i' e4 l
. [7 f+ s$ W8 `5 |; u0 l1 |" y-- 如果作业已存在,则先删除它- F: v* ~$ N& @( f) o& ?0 `$ h
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
3 Z t* V. ?' f& f" ~' o EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';/ n" O9 i5 [7 W- A6 S
GO
1 y1 o" X0 j$ B
2 I* a: [2 P% g2 A* B; N-- 创建新的作业6 K" f# V# j1 m: c+ \
EXEC sp_add_job
+ }& _) g- h4 s# }* l+ v6 [ @job_name = N'IncreaseUserCashJob', -- 作业名称& y" m B6 `% v* _& L0 n; v; a G
@enabled = 1, -- 启用作业4 N+ R" g9 g8 W" r5 E$ k
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
r0 \$ l0 n% @# S& U @notify_level_email = 0, -- 不发送电子邮件通知
5 R+ {- M/ P8 z5 ^& d. F5 ]: A @notify_level_netsend = 0, -- 不发送网络消息通知
7 L! v% g# a2 r, [$ v7 u$ a9 \; U @notify_level_page = 0, -- 不发送寻呼通知
, F) b' @2 T; | @delete_level = 0, -- 不自动删除作业
9 o% ~, L. w+ ~0 \9 C, ]* g5 n @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
* v* b6 p8 F a @category_name = N'[Uncategorized (Local)]', -- 作业类别0 x" g6 E" k1 q9 I
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)/ s- {* I6 S+ r! S
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
4 X$ y; |! p7 U, x S' F+ n8 {GO
: q4 S1 n+ F2 j& f. [) L9 L
' ^- L" ]' x+ z2 g6 Q! j-- 为作业添加一个步骤2 {6 N+ o: x4 l
EXEC sp_add_jobstep
0 J7 _$ I) O: h) C8 x% c. P6 } @job_name = N'IncreaseUserCashJob', -- 作业名称
. J2 N* i5 j2 N @step_name = N'ExecuteStoredProcedure', -- 步骤名称
2 \0 t6 `' ~3 \9 z) t8 ^ @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)7 T) E" {* |1 R+ W
@database_name = N'account', -- 指定数据库名称
1 h. G7 P) L; H0 }+ O* x$ W @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程): N- t8 M7 C: K7 ?) `( U
@retry_attempts = 5, -- 重试次数
, O" I3 p3 s; @" X% k1 F" P& S4 O @retry_interval = 5; -- 重试间隔(分钟)
& Y2 ^; s2 f5 w3 [2 QGO/ u8 a8 L+ J7 ~. D1 v p
9 Z& v& l* I% l; n3 O2 ^
-- 为作业添加一个每分钟执行一次的调度
/ u& `1 h4 |9 I) cEXEC sp_add_schedule
8 C, C/ }4 P$ F8 `8 I% K @schedule_name = N'MinuteSchedule', -- 调度名称
% [4 l, n' Y: M6 o v& p @freq_type = 4, -- 频率类型(4表示每日)
. g; \& m8 o! G @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
! c( c- t- t/ F" s0 w @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
L5 j( {. T) E1 V% Z. h/ [6 n. P @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
- K) g) U* D! L! Q8 C @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)& j h+ |8 `* w. D
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
" g, K! Y' ~% B4 o% h @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)9 B4 U( r( U' Q9 z
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)+ f- s4 E O% M+ n: ]# g
GO
3 g1 [" T- i3 g& L1 F/ ^) R7 r2 f) G& @5 K' }* i
-- 将作业与调度关联起来6 V, I$ G. M* v+ \! `1 v# I
EXEC sp_attach_schedule
; L5 A e' B7 v, r! f" I @job_name = N'IncreaseUserCashJob', -- 作业名称
/ q7 u# ?( v% `6 X$ H* G# p5 A8 K @schedule_name = N'MinuteSchedule'; -- 调度名称# w+ D! d. S0 v0 ~0 Y! W' L( D
GO! u3 w$ A) N) Y7 {0 y$ k) _
% Z$ W( n' A( \7 l( m- ?
-- 提交作业创建到SQL Server Agent
" T% ]$ Q) h3 \5 } `8 dEXEC sp_add_jobserver
0 W" s6 l2 d! h# A( ` @job_name = N'IncreaseUserCashJob', -- 作业名称
1 |# x9 r9 T' X$ |/ J0 x @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
' c6 S/ N6 G1 O8 ?, BGO
. G1 n8 I/ x% Z4 A4 _3 P* e( b' N- u7 j/ C8 v: s
7 l( s E( `2 ]
: J5 Z/ r" m0 O! H# }+ C5 G, L
* I3 |- T% o. B
$ P- G! }$ X( ~) D |
|