高级会员
- 积分
- 870
- 金钱
- 730
- 贡献
- 63
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------! T, n, ?& m7 L: V7 H
USE msdb;& d% K. p& z" _- c) e
GO1 k( t+ y9 O4 ~' s
7 ?9 H) E0 U. B-- 如果作业已存在,则先删除它
, t8 l1 c1 M& S* v7 v& jIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
) P# @- r L, r1 o2 ^1 B3 ^* Z1 p EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
1 a& f$ I/ _' ~1 L4 sGO6 M; d& i6 ], C) F6 P/ V
& v) Y7 d) ~3 [- p6 d' U; H
-- 创建新的作业
2 f: K% j! h" C( h& }EXEC sp_add_job
_- M6 f0 C, R: j9 x# {+ Y' m @job_name = N'IncreaseUserCashJob', -- 作业名称' Q, o* C$ |: S# I5 q1 k) s# v( n+ q1 {! O
@enabled = 1, -- 启用作业# O4 l2 X G9 r3 c3 S
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改6 _ ^) d/ J. i p( r' i. F; K
@notify_level_email = 0, -- 不发送电子邮件通知
7 g! `: s9 @" g* Q! \4 P! n @notify_level_netsend = 0, -- 不发送网络消息通知9 h) a3 Y5 ]/ K& k& Z+ \9 P$ s9 u$ ?
@notify_level_page = 0, -- 不发送寻呼通知
b: K% ?9 k* C' C @delete_level = 0, -- 不自动删除作业
2 [2 H/ y1 O5 c8 m" k2 X @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
7 Q1 W& B h* ^' W. L @category_name = N'[Uncategorized (Local)]', -- 作业类别
* T/ l4 n M' R7 o: @; v9 Q' A# } @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)" W+ I+ z3 V3 R# }6 v' I0 V; i
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
" g0 D/ e2 k$ c& c* x) BGO
X7 B8 L0 Q4 F! Z7 y; o, j8 K. T8 w
-- 为作业添加一个步骤
: |0 W, f( X5 Y/ qEXEC sp_add_jobstep
* ~* d7 N' |5 V' A8 @! l3 \ @job_name = N'IncreaseUserCashJob', -- 作业名称
1 s, W3 }( |' _% O7 E6 t' p. b4 ^" ^ @step_name = N'ExecuteStoredProcedure', -- 步骤名称
0 ]8 D* x1 I- a/ T* B" q; e @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
7 p2 H& X; k3 b/ r7 v @database_name = N'account', -- 指定数据库名称
' k8 x. u; H1 }) ~1 T; C @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
) o2 c- f; E5 r; `4 R @retry_attempts = 5, -- 重试次数
' q, P; f+ `9 M, `+ ^3 q @retry_interval = 5; -- 重试间隔(分钟), u; `, ]4 f1 b4 }
GO7 r8 h0 P; y1 ?: f* Y$ ]. Z3 s8 p
4 E" N" z' P/ `7 [3 C7 T-- 为作业添加一个每分钟执行一次的调度6 j! T% n1 n6 R% {% d
EXEC sp_add_schedule 2 }' x: h1 O# ?0 O' }, q( Z
@schedule_name = N'MinuteSchedule', -- 调度名称
- @' u" \- }4 S5 D( t @freq_type = 4, -- 频率类型(4表示每日)
4 Z7 ?) u( s* }% W% \7 W @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行' N. W0 h" ^' ^- A
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
( m% r8 U: J( q. C) ^! M @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次): q3 ]$ t8 z8 r
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD); T. v* E& L) V$ N3 u& i
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜) t* H. L! K, v9 x' R& a
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)' A m# n5 S$ U1 w
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟) r" M3 @- _+ S, x2 r& q
GO
% @8 d; t; }7 q! E% Y* S, m; l5 v0 L! a" L" E, c
-- 将作业与调度关联起来. Q' A$ t, I& n* h: n0 x7 q- }) L( Y
EXEC sp_attach_schedule 8 e$ I; g7 Y G2 E, L
@job_name = N'IncreaseUserCashJob', -- 作业名称
& `3 ^4 ~' l* [: z: M! J l @schedule_name = N'MinuteSchedule'; -- 调度名称
$ I; m9 ?1 i$ N' I+ I3 fGO
* d( ]7 K4 s$ U! D+ y
# n1 S8 }( a) S. e. W" \-- 提交作业创建到SQL Server Agent5 W0 z6 |) ~" h7 J
EXEC sp_add_jobserver
, I9 U2 r/ S) V% L# ?; | @job_name = N'IncreaseUserCashJob', -- 作业名称
. m2 S9 l6 p( j: L: [1 G6 H% { @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
6 b: K2 }/ w+ q3 M. m4 k" k# bGO
/ s# d7 [1 J" f! m+ r8 B* Y2 d& I' o1 C5 E
' l+ f+ Q% H+ G8 O, }
' P9 y- l7 E9 z+ [' m% o5 k* t+ v2 @. x* v% M, B$ i+ |& s0 [
- @- j; B9 z/ _ |
|