高级会员
- 积分
- 841
- 金钱
- 704
- 贡献
- 60
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------: R- D) [ @& N
USE msdb;
3 X6 a* Q( A4 X' }( VGO% T2 ]4 A6 K% k! ^+ B
3 ~/ d [% P7 ~# ]* H
-- 如果作业已存在,则先删除它
$ e9 o0 T+ p. v iIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')' e/ T& d0 R4 Z
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';# \) C. Z; r& m$ }. f1 R W7 k8 |5 B
GO
$ x+ \& K( @3 O4 I0 T6 g% L" ?) D& Q ^
-- 创建新的作业
) T. X0 r. ^* d& W5 a5 R' ^- bEXEC sp_add_job + w1 U) Y! E, Q
@job_name = N'IncreaseUserCashJob', -- 作业名称: [& |7 g- j! \0 N5 _9 J
@enabled = 1, -- 启用作业* `! o9 i7 I" l/ R: d3 w6 Z! G
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改( V1 l3 O4 _7 j* M: w3 p
@notify_level_email = 0, -- 不发送电子邮件通知
7 t! i' b- ~& o2 _2 ?2 O @notify_level_netsend = 0, -- 不发送网络消息通知/ ?3 N; B. o: q# e( T
@notify_level_page = 0, -- 不发送寻呼通知1 J5 p2 W. t& h9 B& P* u% \3 X$ X
@delete_level = 0, -- 不自动删除作业
2 n& R6 y8 t- v! h0 o2 z* W @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述6 F+ f5 G7 ?: ], |
@category_name = N'[Uncategorized (Local)]', -- 作业类别
# H2 X% @% c7 z; G1 M @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
" N1 {) A* R( a! H @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
9 Q5 N" d/ l) u" {+ ~9 eGO$ Z; Z% P; w0 {7 I2 e* f( q
0 `+ y- h0 y% I1 T- h+ S" d
-- 为作业添加一个步骤/ s8 g# U6 o1 B% X. f
EXEC sp_add_jobstep 8 {& F/ o( x3 Z6 E, Q: V
@job_name = N'IncreaseUserCashJob', -- 作业名称( M2 P$ T( O! x
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
( V$ ^5 z9 }+ W! q3 w7 v% j @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
+ M. ~! D: h/ v( L @database_name = N'account', -- 指定数据库名称5 D5 p6 I, m7 d. d, ]* u
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
- w |( T8 c n. e0 r6 w( p @retry_attempts = 5, -- 重试次数3 J/ Y9 @1 s u
@retry_interval = 5; -- 重试间隔(分钟)+ b' I% Q0 E/ i
GO
$ ]- Z" J/ V, \
0 V# e6 s7 q1 r6 O4 o5 p1 I! h: A-- 为作业添加一个每分钟执行一次的调度1 D! U, S# a0 n2 b) U2 ^1 ^
EXEC sp_add_schedule 2 y. s2 ?6 }( j$ ^4 i6 H0 X5 F
@schedule_name = N'MinuteSchedule', -- 调度名称! z, g. M8 m/ E% F, _" b
@freq_type = 4, -- 频率类型(4表示每日)7 s9 x& I5 P: X! W0 A) Y4 ~- N
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行! i6 \* y9 J& Z
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
8 H/ W' Y* E3 W% V @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
6 D5 g, r: E. z* A4 P' S3 ]7 ?) p @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)! g$ M; y+ @7 C0 M; l4 F" m# g/ ]
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)+ e$ R1 u2 i1 r5 L" o& W: Y( M: f
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
/ h) E! u* B; b9 p4 z3 |/ C @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟) o% k+ {* o6 n
GO
8 g& C3 W- @- c# F" M
7 F5 s) @. z" _& [6 h-- 将作业与调度关联起来. P6 b; P+ l8 J8 H- j4 B& W4 J
EXEC sp_attach_schedule
8 }" U0 k# p; B6 g7 v2 W) I+ ? @job_name = N'IncreaseUserCashJob', -- 作业名称8 H- z, L( Y8 l# N
@schedule_name = N'MinuteSchedule'; -- 调度名称
# l" g- @6 P- N K1 H6 }GO
8 ? A. r$ U/ w7 m) n7 J" t4 a6 ]9 k/ K& H0 v
-- 提交作业创建到SQL Server Agent) O4 y$ J! z0 a6 l0 ~5 I
EXEC sp_add_jobserver ! |. X. N- W7 Z) [0 t$ b7 I" d7 o
@job_name = N'IncreaseUserCashJob', -- 作业名称% p% P- O" U5 i7 P; G4 P2 A, T$ I+ I
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')2 @1 o# E" _: x' e) z2 p
GO
9 i# L+ t* W' w3 S
/ b2 ` J' G4 K( e1 ]
' m, ^6 U3 p4 |4 c& B' F8 `5 y Z9 s9 a4 @
. c. Q; o P! j; ^9 }
: i S1 u1 N6 r$ h' a+ F& E/ ]8 }/ E# ~# [
|
|