高级会员
- 积分
- 867
- 金钱
- 728
- 贡献
- 62
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
- C* K7 U+ A' R' K% |' tUSE msdb;
/ b) P# A( Q, l6 [1 u( x& jGO! d" }$ U0 `, ]4 {: g* P# j. F" m
0 b. O! U2 @( a; O-- 如果作业已存在,则先删除它
, P6 e! D& y* i2 _3 p5 LIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')# M/ q% g7 w% k8 ^- g
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';8 {" K, s# ?) R- j" d4 M: u
GO+ _& f( b; F' V" X
: u# B3 h* |" w; Y-- 创建新的作业6 h q5 M9 C) k( X
EXEC sp_add_job
% ]1 k* P% p b+ H2 y @job_name = N'IncreaseUserCashJob', -- 作业名称
% d D/ h& p& q7 B. T1 c7 o" w @enabled = 1, -- 启用作业4 r0 s, q0 ]' Y! S
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改, m! L: l g% `8 J2 L" w6 ^
@notify_level_email = 0, -- 不发送电子邮件通知
8 m: M$ T9 w1 x* A+ v. n1 @ @notify_level_netsend = 0, -- 不发送网络消息通知
* S, ?* T% {% d) v( t8 L. d1 @/ {9 H @notify_level_page = 0, -- 不发送寻呼通知7 ?7 U8 o! B O
@delete_level = 0, -- 不自动删除作业8 N8 Z7 U7 \* B/ G
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述4 A! u! ~6 e8 u& k6 b0 R
@category_name = N'[Uncategorized (Local)]', -- 作业类别
0 P- n* w4 i3 B$ ?" V @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
' b! z+ y' q) c+ \ @9 _ @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
U6 o( e# n. ~( G4 CGO
$ z1 @$ D: g% `* J$ r5 @# h
. i. S0 Q# H) b" o: ~-- 为作业添加一个步骤
6 g+ U" i" `1 F! ?5 I: M1 bEXEC sp_add_jobstep 8 Y6 A$ o% ^. S" u* Q% R- A' N
@job_name = N'IncreaseUserCashJob', -- 作业名称" I* F8 T2 L+ \4 E
@step_name = N'ExecuteStoredProcedure', -- 步骤名称! g3 G' L0 [! g, R
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
! h' v" _" d+ i! v4 G @database_name = N'account', -- 指定数据库名称1 p7 U }0 C7 ^3 K( Q5 r
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程). G. b3 T. L2 F' M$ K- M, O' B
@retry_attempts = 5, -- 重试次数
! p2 v& |: k% g! V6 R @retry_interval = 5; -- 重试间隔(分钟)
$ k/ ?& u" P: B4 {( wGO
4 c, C" O9 E% ~9 h& e8 ]* D( h
) G' Y) l3 _( n# c" i* M+ U-- 为作业添加一个每分钟执行一次的调度
+ U6 @# O4 H+ gEXEC sp_add_schedule
/ |( @3 Q r; B2 I6 P1 f, K9 S6 L; R @schedule_name = N'MinuteSchedule', -- 调度名称! d, R+ e( S: L& q* P/ U, o& C
@freq_type = 4, -- 频率类型(4表示每日), Q3 \% {9 _- Y/ Z- O! O
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行4 y4 w( c S4 X! [, |
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)$ \4 P4 U! j0 c3 L" ]
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次), W4 t2 l0 {5 K& l6 |5 _
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
X; z3 p, t5 g0 d: T/ m( |7 Y5 j: Y- _ @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)' V& w; l1 ~: ]9 G& }
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期): \& D2 m: X, g5 T7 D2 m/ \# d
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
) p. d* C* [% Y/ HGO: o ^% I7 s" x
7 `8 ]* D" s4 S5 I- o-- 将作业与调度关联起来$ d9 g+ p8 V5 ^7 \9 A; w, H0 P* l2 p; S
EXEC sp_attach_schedule
- [0 S: c% m, C; [ @job_name = N'IncreaseUserCashJob', -- 作业名称! L; {" |6 B |- {
@schedule_name = N'MinuteSchedule'; -- 调度名称; x" ^6 j# h8 P E) c. g
GO, u; E6 k- w( e* B: S! ?, ~
6 _3 L) d9 Z- V+ |% s-- 提交作业创建到SQL Server Agent
0 H9 [( h% R/ L- W* U. ~EXEC sp_add_jobserver , G4 P6 r5 x, }+ X% U# s$ e
@job_name = N'IncreaseUserCashJob', -- 作业名称
+ X8 v+ m' o/ `" t: o1 T& `6 Z @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
* i, J. B" s, b2 G, v2 qGO) m( M1 f# U+ w
3 m2 x% i. V# M) V n1 c8 w1 u! O
$ Y6 B( S* P% T3 ~7 b+ `
, j& C Q( ?4 t
4 P- M6 G0 }( n9 ~* y7 P
8 _7 N0 u2 F1 j% p! A& v |
|