高级会员
- 积分
- 812
- 金钱
- 678
- 贡献
- 57
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
) a" P2 S, p& q9 KUSE msdb;
6 _ K" t: Z4 X% _$ nGO
/ \( |+ @( v% }
n5 N0 L+ o+ Y4 `; B-- 如果作业已存在,则先删除它+ Y: h+ |' Q- u3 C: H
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
1 k, v: N- H/ H# E' l3 A EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';1 N& N* U( T3 C" B& |
GO3 `; U. v9 [ N: C" l
5 X6 g9 M* _2 i% l
-- 创建新的作业
0 N6 z' r- z2 ^: ]3 xEXEC sp_add_job : T- ?( O G3 `* e
@job_name = N'IncreaseUserCashJob', -- 作业名称
' b$ q% T+ O$ ~) k @enabled = 1, -- 启用作业$ h/ e) F* U" [" P
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
& F2 p5 e" @. F- D: p& B @notify_level_email = 0, -- 不发送电子邮件通知6 \( ]6 A3 L+ }
@notify_level_netsend = 0, -- 不发送网络消息通知5 g) h4 l* o" u# n) u. C0 ~
@notify_level_page = 0, -- 不发送寻呼通知
6 ~. @+ P2 F! ]& o2 ^ @delete_level = 0, -- 不自动删除作业! W5 N( T& o1 J* W0 U/ c, p6 d V
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
/ b h/ p' q' i% h4 q) I) p @category_name = N'[Uncategorized (Local)]', -- 作业类别
s- m, H1 U( x) d @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)6 v8 E) D4 S% q% Y8 S
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
( F; a! S* f: c' k4 dGO3 y2 M5 i3 y; S6 A( q) s4 b
$ B0 w3 c' j& M; O; q
-- 为作业添加一个步骤
( F1 ^0 B9 b7 N6 UEXEC sp_add_jobstep , M, d7 Q. h+ P- n- p* v) J
@job_name = N'IncreaseUserCashJob', -- 作业名称8 R# s) ~+ y& E3 S( T
@step_name = N'ExecuteStoredProcedure', -- 步骤名称+ _ H5 A' B L) B7 s
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)% {4 p+ T) V6 R4 |' x0 ?" K+ | I
@database_name = N'account', -- 指定数据库名称% C# ^5 u) Z) ?: _. {4 D0 D# F
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
. P9 t) U! j0 n7 ?- j) a! Y @retry_attempts = 5, -- 重试次数. ~3 {8 c$ K; \/ b' i
@retry_interval = 5; -- 重试间隔(分钟)) I) C. J4 n5 o6 U. n3 r
GO5 e( C, E" H4 @
2 K7 a7 z9 ]: X) x4 B- z8 O
-- 为作业添加一个每分钟执行一次的调度* a1 W* o2 t* d+ _9 W4 P8 \+ b
EXEC sp_add_schedule ) I! p3 ?+ l O7 z
@schedule_name = N'MinuteSchedule', -- 调度名称
. S7 i; a7 W0 O1 K( d& m N @freq_type = 4, -- 频率类型(4表示每日)1 a/ X2 u! U( F5 [" m& Z
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行& E. S3 f6 k, w' n
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
& R; ^' A& |: o/ I9 ~ @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)4 M3 a5 |# N' w* `1 T* S
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)( z& W- G/ x$ g' u, [9 O0 m
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)/ Z# y% U% Y/ I5 K+ V
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
" x. k) P7 j% \/ @0 W1 G/ R @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟); i1 T3 _( U. S& g4 s# r
GO
. ?! p T! C& G; V9 }3 S6 P5 |: [. E7 w) d) D" V" m
-- 将作业与调度关联起来& l. Z9 J$ J( \! [! r4 y
EXEC sp_attach_schedule
' A2 y* a& h! a @job_name = N'IncreaseUserCashJob', -- 作业名称9 a4 M9 {* x: x0 X3 i5 g r
@schedule_name = N'MinuteSchedule'; -- 调度名称8 `. G% u5 q+ f& |6 `9 {6 \7 O& D
GO
5 ^+ b3 |, e% k! z6 c
+ N) A' m5 f, h9 i4 |$ \, ?: B" d, ~-- 提交作业创建到SQL Server Agent8 L* A; [# i5 S" j" E/ s) Q
EXEC sp_add_jobserver ' r7 b0 }( f6 n
@job_name = N'IncreaseUserCashJob', -- 作业名称+ m1 G. Q- O8 L! r' l& i# t
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
. {# T% g; _. F l5 GGO ?( B. @* s5 @. I7 C
2 Q: F9 A& h7 C. t8 Q- C( L& Q/ V0 l# d
7 T, L+ h C9 Z: E
; E0 r( ]5 p. ?3 K7 [
- }" |$ z! |. `/ p5 [9 X
|
|