高级会员
- 积分
- 812
- 金钱
- 678
- 贡献
- 57
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------; {4 F' n' ^+ ^, W& h) b. P/ d
USE msdb;
1 ^8 T% u: j3 H) t; [GO
, j+ n- |/ w5 G! d6 ~ Y) O9 T0 Q: z% e; e9 T
-- 如果作业已存在,则先删除它% O l- q8 M' p: L7 E- A& j
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')3 Q0 U& H, z4 W) v) \
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';- u) e+ @, R4 e- i) J
GO
2 b7 v: b# `$ {/ x& K# r( L. o$ d% B, q: Y5 |2 y
-- 创建新的作业
' I9 z$ J& \$ m1 d0 [- Y3 LEXEC sp_add_job ( i* S) |# c5 \ `3 N( d. q& ^
@job_name = N'IncreaseUserCashJob', -- 作业名称! D! S$ c4 w8 K5 q6 w0 T. _
@enabled = 1, -- 启用作业
: P$ r! Z, l: m* s @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
3 k0 s# _+ R, ~, o! V @notify_level_email = 0, -- 不发送电子邮件通知& X2 ?! c4 v' a4 v1 T6 I
@notify_level_netsend = 0, -- 不发送网络消息通知2 x( {2 r( k6 x! Y! }- D/ t# p
@notify_level_page = 0, -- 不发送寻呼通知
( L" h7 n4 \, b! b& @8 ]3 |5 Z4 G) v @delete_level = 0, -- 不自动删除作业: f* v1 v' m9 O. E Y9 v! ~" b) O
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述# }' Z" K. E- \: |& i* |0 K
@category_name = N'[Uncategorized (Local)]', -- 作业类别/ |* l* U) A- s- ^4 U: x7 z6 F2 {4 f7 v
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)2 s- I: @4 o" U/ ^$ E
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
% B* \2 W% |) z$ S! kGO6 M& E) O5 a0 X5 v+ l
$ S; g8 E7 H, `" @$ }
-- 为作业添加一个步骤; G& c" i0 f; f
EXEC sp_add_jobstep 7 I {2 f7 z. w \6 @
@job_name = N'IncreaseUserCashJob', -- 作业名称
2 ^* X9 R0 A" i1 k$ c @step_name = N'ExecuteStoredProcedure', -- 步骤名称
2 |. S5 P. y3 S: P @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
/ _# Y4 B1 D: s! E2 [1 e8 E) P @' l8 n @database_name = N'account', -- 指定数据库名称# }' {3 o6 c# V- W% Q. m
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
5 y/ V7 i( @. P @retry_attempts = 5, -- 重试次数
7 i% P& A" m4 V7 D; b @retry_interval = 5; -- 重试间隔(分钟)
U/ O0 h1 c# s* y) v t; w. Y, ^GO# U) h3 U! s# E7 M
. N. d/ j) E# s; i' p, e$ S-- 为作业添加一个每分钟执行一次的调度$ L3 i/ L0 |! w, a' A+ K( H
EXEC sp_add_schedule
, |/ \( b5 R1 ~9 R @schedule_name = N'MinuteSchedule', -- 调度名称
7 C) h, P) S) Q3 t @freq_type = 4, -- 频率类型(4表示每日)8 e" U, A& e8 g0 ]- Y' M
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行8 O7 C0 ]0 Q% Z7 V0 }
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
5 T" C! `. q; V; w) \; Z6 z& Q @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
+ A' v: F/ I! A3 `7 @& @ @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
8 t7 W) j/ C2 M. e5 ^ @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
& F# F h+ s3 e5 k: x1 m @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)* c) W+ {$ e" t* R+ R1 l$ h1 ?
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)- g& j; {8 G2 b
GO
3 _' j# J' S* F( e' k( n5 u3 N1 I5 r) K* _6 g
-- 将作业与调度关联起来1 G% X7 P1 u( l) A3 A* z
EXEC sp_attach_schedule 7 X# O0 O$ n* Y: b$ X, j& I9 j
@job_name = N'IncreaseUserCashJob', -- 作业名称
+ a& ^3 m. ~' W. ~ @schedule_name = N'MinuteSchedule'; -- 调度名称
2 l+ X% |. r( `- F7 HGO
) y, ^* C- ?( r0 I/ E1 h2 E4 ?; d! v1 c& g d
-- 提交作业创建到SQL Server Agent" X+ @7 F& _0 M- f: ^
EXEC sp_add_jobserver
2 g3 h1 I' {6 W+ N' y: L& f @job_name = N'IncreaseUserCashJob', -- 作业名称
4 g- C$ z8 H$ F: @& { @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
# A5 u% d- _; g) G8 X* TGO
0 e ^( T9 H7 L0 a8 `; l$ Q
2 m3 K8 e; w3 D2 r+ ~
- S! k4 a+ r( i/ W/ W% j9 L4 N" M3 |" z6 ~9 j3 E+ P# ~, A
3 c( s7 {3 n5 k1 E& I9 h6 w( I
* O A8 N% e+ O% [0 X2 ~; U |
|