高级会员
- 积分
- 838
- 金钱
- 702
- 贡献
- 59
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
" W: H \3 J3 [5 @: _8 s+ tUSE msdb;
' O0 U- y% ^' Y/ [3 _% m# W4 xGO
- q3 H$ e* j: F, g9 [+ s: k! E6 s( s, I( y# R! C" N
-- 如果作业已存在,则先删除它0 o; E) n9 V3 Z6 B
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob'), I4 g( L4 |2 G5 \9 O7 J3 q
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
( g$ r& B2 w8 uGO
7 n2 w/ V9 E& h% F; w6 x9 @3 M% j; b, h/ G
-- 创建新的作业7 m9 m2 ~) f, |8 j8 n. u
EXEC sp_add_job
" I% d) t( v+ H0 n# Y @job_name = N'IncreaseUserCashJob', -- 作业名称
1 X, @1 [8 a+ `: B, ^" | @enabled = 1, -- 启用作业
; O& }+ h$ w+ H1 A @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
) e( F" V. q5 y/ I. G% l4 x' i @notify_level_email = 0, -- 不发送电子邮件通知9 |/ N% \' s. E& }
@notify_level_netsend = 0, -- 不发送网络消息通知% L% R' r- l8 v. p: f# {# U5 A/ @# A1 }
@notify_level_page = 0, -- 不发送寻呼通知. H Y/ [4 J; H
@delete_level = 0, -- 不自动删除作业
" a9 p& F" e2 d5 Q @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
. p, B" I3 P8 d+ M, V @category_name = N'[Uncategorized (Local)]', -- 作业类别3 Z: g& L X* G# Z+ c# j6 |; b( I. z
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)! r" c) t7 E% x: e- j% Y# I
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
) U6 j$ A- \% C) b3 I C/ ?" xGO
9 F$ P* L6 v0 E( a
) ?" _# P. ~5 {+ U7 ^-- 为作业添加一个步骤9 F C0 h$ t* t' s
EXEC sp_add_jobstep " M+ k" _9 O$ a2 P$ T
@job_name = N'IncreaseUserCashJob', -- 作业名称
9 ^! E2 S3 K& E0 ~4 [) C1 w& C @step_name = N'ExecuteStoredProcedure', -- 步骤名称, b% }" H, V+ t: f. R2 U1 f: }
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
/ E! B/ V* x( s8 v9 Q5 r I @database_name = N'account', -- 指定数据库名称
8 h3 h5 b# D8 S3 E/ z @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
$ u2 d( b: Y/ z3 Q# R% }, }3 ] @retry_attempts = 5, -- 重试次数
. H# T0 q3 J$ P5 n @retry_interval = 5; -- 重试间隔(分钟)8 c" q4 P0 h' T; }0 e' h, x
GO4 |1 a* T# h& d( h
: E( B8 H' q3 [7 D) W a-- 为作业添加一个每分钟执行一次的调度
1 J$ g6 b2 O2 w& P. GEXEC sp_add_schedule 4 f% ?7 d. A7 i% ~
@schedule_name = N'MinuteSchedule', -- 调度名称4 U: x2 Z+ ]7 q# ^6 j9 B
@freq_type = 4, -- 频率类型(4表示每日). _/ p# W7 A8 u- C/ O
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
+ d0 N% w4 k6 z- t @freq_subday_type = 4, -- 子日频率类型(4表示分钟)) X. {8 [) c% q# C! w! `0 I* ]+ [1 `
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
x6 V% ]+ L7 m" a2 {7 m0 z @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
! _' j4 |$ b# P h/ l @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
, _ M: O, _8 y- u8 ]# T @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
0 T" e* M2 }8 d @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)* Y2 C5 R6 x' X: K }2 Y
GO
; [8 q5 P3 ~, A" N
. ~' g6 `4 F& n) c3 y-- 将作业与调度关联起来2 h- _5 e/ E% N( C( q' [& p3 n7 s
EXEC sp_attach_schedule & ~& y! q9 W" \; g* n
@job_name = N'IncreaseUserCashJob', -- 作业名称
& l7 w$ o& u% D; s/ _* [ @schedule_name = N'MinuteSchedule'; -- 调度名称. h( s2 g h, h7 E9 T0 N5 G
GO- D3 z B% X4 y. t9 k
+ d) k+ E" v9 Y0 r5 }-- 提交作业创建到SQL Server Agent
( J2 ~" ^+ y7 E3 PEXEC sp_add_jobserver 6 z7 f4 i( w' ?7 F; B
@job_name = N'IncreaseUserCashJob', -- 作业名称2 d' ~( J6 c0 A R; j9 u. g
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')2 x. O( a/ e( E3 N6 \" Z
GO
0 ]. x8 R& R% b: \3 h& i* [) [1 j) [; D' R% z1 k4 h' a+ U) b
% M) N' Q5 j. n; v: p
' F' A0 F: e4 Q( L. k
) ~6 h7 Z& l: X( [
+ s7 v( m# i. H" N1 Q' {& }9 ` |
|