高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
# ]/ ~" N; ~4 x! S5 PUSE msdb;
$ C; H/ ] t( UGO- r4 p% V0 Y) S2 d5 b
5 E# n2 p& ]- A
-- 如果作业已存在,则先删除它/ `% L. }* N9 C* p5 |$ L" ]
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob'): ~9 l5 L+ t8 w/ [ [( O( q
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
3 K, I& ?3 `. \3 H8 ~2 f2 ?GO
, h- h% ]7 B: f1 d+ M8 u6 d/ t( t7 I
-- 创建新的作业
: m+ ]* t: l$ kEXEC sp_add_job
+ k( P: z. H, B {, ~ @job_name = N'IncreaseUserCashJob', -- 作业名称
2 K% F9 z5 M+ ^& P8 F1 H @enabled = 1, -- 启用作业& K& g+ U/ w" ]7 f: U* z; @
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
2 @" B0 @# a* I# Q0 y, d @notify_level_email = 0, -- 不发送电子邮件通知( r% c( ^8 [) v! Q
@notify_level_netsend = 0, -- 不发送网络消息通知2 k4 u% F% v$ F( s/ M3 H
@notify_level_page = 0, -- 不发送寻呼通知
$ D+ S, l" g7 U* g: C9 C1 i @delete_level = 0, -- 不自动删除作业. r1 I# j/ Z! K
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
* e" k7 A: z: R: H! t) | @category_name = N'[Uncategorized (Local)]', -- 作业类别
' H7 x6 v! @. b. Q8 L: @ @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
% X/ |% M9 \2 e4 y& s @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
5 o, ]1 I0 ]6 O7 ~GO! _; l/ p" k7 I
6 X: ?0 M7 Y" z5 c2 W-- 为作业添加一个步骤
6 R$ }* R/ K% m' FEXEC sp_add_jobstep
2 } P4 W7 f* `2 o5 }) E, q" X, S @job_name = N'IncreaseUserCashJob', -- 作业名称
4 F! z- l! X- ~0 M) j9 j @step_name = N'ExecuteStoredProcedure', -- 步骤名称
' S) V' z9 ^( E) z% g# @ @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
- o3 ]0 S/ ]$ W3 R5 G @database_name = N'account', -- 指定数据库名称* ?5 u0 A; X/ M! h" S% E& U
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)* C2 I1 p( a" }% w+ \, _
@retry_attempts = 5, -- 重试次数$ E# t M& f8 \8 g! m1 F. q
@retry_interval = 5; -- 重试间隔(分钟)& n/ l k Q5 b( e+ G
GO
2 P! Z7 M! K( x! [1 l7 P8 ^7 j
; v) m! g, f5 x0 o w- e7 g$ _& h-- 为作业添加一个每分钟执行一次的调度
6 D; ~8 b, Y8 yEXEC sp_add_schedule & a) ]3 ]# ^7 d
@schedule_name = N'MinuteSchedule', -- 调度名称
/ T+ q3 |4 M7 ^+ I4 e1 Q- L5 } @freq_type = 4, -- 频率类型(4表示每日)) j5 f, q2 e, F& `) P1 P
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
7 `# H4 W1 O$ |/ R) q @freq_subday_type = 4, -- 子日频率类型(4表示分钟); e0 H0 t3 o% }& G. |7 N& a
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
8 N9 j" q9 n* L' y3 d @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
) s! F i4 _' y: z& o @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)$ A/ |; [9 k5 f
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)8 B; S! d8 o& L8 w
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)/ K; N4 M( I, z+ b
GO1 H* ~, P' g3 O- |: n1 X
* Y4 `! ~& |) B( m-- 将作业与调度关联起来
7 n. `! y* H; g4 F" K! kEXEC sp_attach_schedule % S; v( X5 z% b4 f6 r7 W
@job_name = N'IncreaseUserCashJob', -- 作业名称, d2 B3 D6 \ D3 g9 i
@schedule_name = N'MinuteSchedule'; -- 调度名称* g/ ^1 U5 Y" h2 H8 J
GO; m+ b D0 A6 t) f& I) s* J
" n- y& |; C. n. J1 ]* b-- 提交作业创建到SQL Server Agent
+ a: l/ \) j: T a6 ]EXEC sp_add_jobserver & R# R: N4 _3 g8 g/ Y
@job_name = N'IncreaseUserCashJob', -- 作业名称
( ^8 L! Z9 d9 B2 y @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
" Z1 _" }8 h+ V* R3 v" T5 NGO
0 k& x" d) T9 I" F/ S- Y
. m$ c0 m# x( o( h) s6 Z/ D/ n. L" a" \: C# R$ p
* | o7 L$ M, d3 g% l# u
5 g) O: f; s& B J5 |+ o! b) [7 d0 o9 _
|
|