高级会员
- 积分
- 891
- 金钱
- 742
- 贡献
- 72
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------0 k2 I; R4 ]+ G+ l$ u6 h
USE msdb;
5 K7 \/ x! P0 L% ~GO
+ J2 J1 s, w6 ?, t) H
) }" H5 d: {$ \- B-- 如果作业已存在,则先删除它: R4 c5 s7 I) [ v
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
8 ~" j5 ~# @4 w/ U1 |/ n EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';. `9 f# n* O3 R4 H9 c1 V
GO
: G" t% E* |0 }! A6 H a! v, q' z& s* e' I' v, Q+ c! ?0 l+ E& F
-- 创建新的作业
$ O; Q( Z M s- mEXEC sp_add_job # D/ k- C0 u% n: C5 \6 v/ `
@job_name = N'IncreaseUserCashJob', -- 作业名称
9 z: j5 R: z$ J3 G3 F* O) Q- D @enabled = 1, -- 启用作业
% \! H( K% M# {, j i* D" o5 f0 A @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
5 g* i0 A" p5 N @notify_level_email = 0, -- 不发送电子邮件通知
6 ^# N! A- _7 L- r @notify_level_netsend = 0, -- 不发送网络消息通知
$ [/ K' z3 n% c6 e# M8 E. q: S @notify_level_page = 0, -- 不发送寻呼通知
+ ~" _4 L5 V; `4 x @delete_level = 0, -- 不自动删除作业$ k) t) j' |7 k0 K' F. S9 @
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
7 ?9 N. W& s' y* O' j+ f @category_name = N'[Uncategorized (Local)]', -- 作业类别 k8 n( T q# k( x4 G7 J; u" r1 d
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
" s* G, n- b8 @ @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员8 Y3 S) r) C# I5 U- Q
GO5 a4 k6 v; Q7 e- N6 H# B& P8 ~
: d0 _' z; l0 t" p" I5 S; T-- 为作业添加一个步骤
5 T9 U9 ^7 `7 a# K/ s1 F2 l CEXEC sp_add_jobstep $ B9 _ h* R, h; U; c8 @
@job_name = N'IncreaseUserCashJob', -- 作业名称' g& K) ~9 A; X: G" ~( ^2 K9 j
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
, t+ n5 G, T6 E L& W1 K& Q @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
& J: U u% m; T5 C3 {. ` @database_name = N'account', -- 指定数据库名称
% f! }9 m. z9 Q' t% P+ x @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
; K4 b2 z) A1 {& y; `9 ^# r @retry_attempts = 5, -- 重试次数8 k: B* v0 L( g) g, [
@retry_interval = 5; -- 重试间隔(分钟)3 U1 K2 S& G) ? J. ~
GO& u/ [0 x1 c$ ]6 Q9 D- l
2 P" B: B9 m2 @9 R4 E% T3 J-- 为作业添加一个每分钟执行一次的调度1 Q: ]& x0 ?, F
EXEC sp_add_schedule / t; c8 o) F6 h8 w! q
@schedule_name = N'MinuteSchedule', -- 调度名称
4 |0 r$ e8 o7 t @freq_type = 4, -- 频率类型(4表示每日)
1 r; U1 b+ L5 p8 g1 Q4 z$ q @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
4 a1 G4 B4 ?2 O* R/ Z5 I @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
1 f& L' ?( N- n" N' ]- ^ @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)- T, t9 p8 T4 C- `
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)3 s2 J8 ?5 u% A6 h1 j0 |8 u6 K
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)4 ], m0 P. t/ ~( {9 H& @ J5 p: \
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
$ p f" |' J; o8 ] @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
6 t. F" Y G/ [$ c- U' S/ C0 l+ H8 MGO! b8 N/ u0 r4 k* f' |* d N& z% G7 K
. R+ w4 S% k) i! E-- 将作业与调度关联起来' ^( }# K) J% i
EXEC sp_attach_schedule
: @% `/ ^% G" D. x( a* T& W @job_name = N'IncreaseUserCashJob', -- 作业名称7 W; M8 d( p2 u, N! u: }
@schedule_name = N'MinuteSchedule'; -- 调度名称7 F6 n: B$ G" e
GO
% s3 }5 x" ^% H" T9 M# [8 D
* ]- j$ N3 D. f9 }1 o2 T' e; n) r-- 提交作业创建到SQL Server Agent
3 Q* l5 B. C$ }EXEC sp_add_jobserver 1 \5 h# Q/ D' Q* z! h" {% N9 Q
@job_name = N'IncreaseUserCashJob', -- 作业名称3 |) A/ [/ j5 B$ Y
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')0 M+ H, B7 x; O* Y4 f: e2 T
GO0 P7 ] [# _/ p7 x6 f* F) I0 t
+ s- L' j' y( P" y+ Z Y1 ]% ^
7 r' u% T# {5 D4 g! k
& |2 E$ X5 Q5 i$ g
: U1 m+ H4 _. ]: y$ m" s5 [8 V& |
; G( u2 g9 n, w# [ |
|