高级会员
- 积分
- 891
- 金钱
- 742
- 贡献
- 72
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------9 w% M6 p) |- ]6 H. }
USE msdb;
6 W3 q. O. I6 E/ b3 i. [6 K: X& UGO2 E' z- ^1 P1 P& @& a5 G' c4 M
. x" w) G" _4 C( u-- 如果作业已存在,则先删除它
8 d7 h7 ? P) X! IIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')7 F% K% ^+ I3 p" f& i
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';7 x7 R; p: y1 w4 H, U
GO
* T* s; _9 E O8 b. o& c
# G# C4 n8 ?. M. z- i# l& C-- 创建新的作业9 y* c$ L0 d: s: D3 G
EXEC sp_add_job
" o+ e* i1 h" D+ | @job_name = N'IncreaseUserCashJob', -- 作业名称
; O9 u8 Q/ |& M q: P- F) x" D @enabled = 1, -- 启用作业: F3 w) J8 X# D j2 K0 s( j! H
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
% |4 k$ y6 {6 `5 [ @notify_level_email = 0, -- 不发送电子邮件通知# f( S. x, l4 | F, A/ A' [( E! m1 }
@notify_level_netsend = 0, -- 不发送网络消息通知5 r! D$ {; `) T5 \" {
@notify_level_page = 0, -- 不发送寻呼通知: U8 j) o U; |2 S0 V) \) f9 v
@delete_level = 0, -- 不自动删除作业% q, O- n d# G1 a* U( s
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述/ J. f+ q2 Y F0 z' m- B
@category_name = N'[Uncategorized (Local)]', -- 作业类别
6 ]6 D5 |) L" j @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
D! Y) g) g0 W0 l! x/ Z @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
4 d. j/ M, i# YGO
8 i1 j4 }6 f4 C5 V
' U7 W4 j* M1 `" [ {$ I) u7 T; Z-- 为作业添加一个步骤
6 e& C6 a( [4 M* j y* O! CEXEC sp_add_jobstep
w7 ^4 C% A; B6 T% R @job_name = N'IncreaseUserCashJob', -- 作业名称6 O# k0 q& h1 D( ~" G# N- p0 ^
@step_name = N'ExecuteStoredProcedure', -- 步骤名称1 H2 P* }- B& y
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
' {: a( V( n3 ]1 x% L @database_name = N'account', -- 指定数据库名称
; d9 ^9 u3 }! D" d @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
7 t$ H& G1 m5 k8 F4 y @retry_attempts = 5, -- 重试次数" m/ u4 ]3 y2 M6 d1 q8 X) |; N& s
@retry_interval = 5; -- 重试间隔(分钟) `# I3 _. h# | T
GO. G9 u; S$ B- `1 {- @6 p
) y# L7 V+ ] ^7 o1 @# Z-- 为作业添加一个每分钟执行一次的调度
" S' R% T7 I* v3 n4 L2 h iEXEC sp_add_schedule . C ?9 e7 L& F4 N& Q9 M- f+ Q
@schedule_name = N'MinuteSchedule', -- 调度名称& g" {$ y# r+ w; }- V9 v
@freq_type = 4, -- 频率类型(4表示每日)
: f' D+ e* m B6 L: l7 j% h# Q- j @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
5 U* J$ }! w1 H7 s' ~ @freq_subday_type = 4, -- 子日频率类型(4表示分钟)( m) m' i' [0 O$ \) k
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次); K" w0 x9 J \! m+ g* U l
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
1 X- S; D* W# t @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜); q0 p5 z/ U5 w' q
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)4 V: i) h# ^- C; f2 `! T
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
% B9 e6 E; Q6 F' k# KGO7 u2 p+ Y9 [* i! w2 p
& C; E' L8 K! K3 g
-- 将作业与调度关联起来5 O# A! k" r8 [1 @% w. y: Q; h
EXEC sp_attach_schedule
- j+ d6 \+ U2 [- P- S @job_name = N'IncreaseUserCashJob', -- 作业名称
* J" i& v( E2 Q/ I5 t @schedule_name = N'MinuteSchedule'; -- 调度名称, v& w s& }. S( W5 m. o$ ?3 H
GO" P: A+ d* E5 T9 o, E3 G
5 J7 M# O1 c0 r" G( L, h
-- 提交作业创建到SQL Server Agent& ~2 `; L% F' s- q2 [' G
EXEC sp_add_jobserver N5 h( g1 I0 g& j' b* b& z' B# t6 }
@job_name = N'IncreaseUserCashJob', -- 作业名称
4 v! Z; A! m7 A: | @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')" D4 T8 u) C& `" C) S+ j
GO
5 ^ V0 ^3 X8 e
2 m2 e+ f* c( q- q8 E, U& J5 V' I, b4 r' g7 f8 m. b
2 e, L0 s. q" R x) ^# Y
& c! q, h6 a/ J- G
+ u' q- o# T+ C( @ |
|