高级会员
- 积分
- 867
- 金钱
- 728
- 贡献
- 62
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
2 J& E# h9 ?1 [$ }! ZUSE msdb;
6 ]% h5 Y0 O' ~/ `: \GO
6 H; X# p J: u- D8 n) \
% I5 r! c7 f/ G& @( m0 i( G-- 如果作业已存在,则先删除它
( `5 K0 r0 K+ DIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
7 D' _7 W& i6 ~9 o3 } EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
' v8 |. T3 f tGO$ B" d! ~, {. @7 C* h& d. ]* S
8 M7 t2 o& m$ O+ R7 ~
-- 创建新的作业 A) h" ~2 O. k4 `. d- I8 P( L
EXEC sp_add_job ! s% g. Z6 p- ?8 X: H) b4 U; y
@job_name = N'IncreaseUserCashJob', -- 作业名称
5 ]9 r) u4 D- f' ` b& M- m @enabled = 1, -- 启用作业* U8 \' l9 [" a5 _( {! `4 O
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改8 w. p G; a* f6 h8 C( c# p$ G
@notify_level_email = 0, -- 不发送电子邮件通知
$ e" p) D" L% I3 b/ ~ @notify_level_netsend = 0, -- 不发送网络消息通知
# i; q2 \6 h4 t1 { [ @notify_level_page = 0, -- 不发送寻呼通知& L3 f) p% `0 u/ H3 ^
@delete_level = 0, -- 不自动删除作业0 Q( U! V0 W2 S5 U5 [! v
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述+ c0 k( m4 ?* T3 O+ r/ s
@category_name = N'[Uncategorized (Local)]', -- 作业类别
1 @. Z, J* q% o2 _ @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)5 q# k! R) J8 O
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
j2 z7 y$ {" @1 D! rGO9 K/ ?8 S* e7 s" |8 X
) Y4 @# R. I; I; I4 d* y6 o-- 为作业添加一个步骤
$ U. ]. O- o" Q# x) AEXEC sp_add_jobstep ; X' ~, `9 n. q, B- E; N
@job_name = N'IncreaseUserCashJob', -- 作业名称
' M! F8 r% H( E. ? g7 h1 O7 b' z @step_name = N'ExecuteStoredProcedure', -- 步骤名称) `. g! J0 `$ {
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)0 e" g! G& D, |+ [
@database_name = N'account', -- 指定数据库名称
! E) E) \; i, l) X i; N @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
, E& i/ m3 E, e1 Z& |- S- m+ y2 S, t @retry_attempts = 5, -- 重试次数
% F+ N, t6 l1 v& j/ E! I( N1 k7 l6 g2 c @retry_interval = 5; -- 重试间隔(分钟). ~/ [/ j; U; w8 g
GO
: H: x v! H1 }5 \% [& T x& J( q& V1 e% d6 q! }/ l' W- `
-- 为作业添加一个每分钟执行一次的调度
0 y6 Z/ J0 e" hEXEC sp_add_schedule 8 |- |2 r8 O7 P+ |# ?- d" H
@schedule_name = N'MinuteSchedule', -- 调度名称8 j1 W5 e4 s% _
@freq_type = 4, -- 频率类型(4表示每日)
- S5 J# ?! }- S e6 v$ \" r @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行) p& T& A5 i0 y1 a0 P3 ]9 H
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)( X+ O3 G( I# B! t" t
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
0 E" ?3 }0 h; z1 E @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD); |+ p$ f7 {+ Q3 W# Q
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
6 t. a( a$ U T @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)3 e! f- J: |$ Z8 `8 {* x7 v2 }5 @
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟) h: H6 n6 N5 ]( N$ n
GO5 r% m! {, c8 r/ G" w
n. L; |$ B: i7 A$ Y" O/ \
-- 将作业与调度关联起来9 t6 b7 c, X7 K% e
EXEC sp_attach_schedule ' Y3 B1 D1 V' [8 Z& i, A
@job_name = N'IncreaseUserCashJob', -- 作业名称5 G. A! v$ P0 \! w6 R
@schedule_name = N'MinuteSchedule'; -- 调度名称/ \2 a& l+ w, M; I% E) A; J5 P% \
GO
% [, [8 l- }8 z8 H7 N
& q# U5 v) f% g1 _3 Y-- 提交作业创建到SQL Server Agent
/ {, y. P0 t5 z7 o3 L+ D1 s, H" g0 oEXEC sp_add_jobserver
' A1 x/ e# z) r7 h" g s0 e# e( n @job_name = N'IncreaseUserCashJob', -- 作业名称1 U5 f+ V4 M& I5 F/ B' z
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
. g6 B2 H p6 o4 T& mGO
+ o& h/ H/ @" z3 n0 h3 d v& I) v0 E( s2 m
+ [6 A w! o+ F& m& V. h6 _7 w$ o
* e" ^5 T$ A: a% {5 N( @
J3 q& Q9 E- ?6 U5 J- J3 O5 E: l
3 _0 X0 A" _0 w/ ^8 I( F |
|