高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------4 _ F4 z) b/ C. t/ ^4 E v; \
USE msdb;
/ u9 E& P5 R2 b, l1 r: mGO! Y( S" R ]; P$ y! n7 T
5 M5 @: T( k' {4 m2 k9 X- _-- 如果作业已存在,则先删除它! X+ r. E8 m6 x. d' i" D
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
! {2 J, X |. Q/ Y EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';) X' v _4 O7 U8 M
GO
% }1 i: N7 c g/ J" Y2 Y) O# q% o& G$ b2 ^5 T6 f( R9 f
-- 创建新的作业 i3 B+ T- M/ h( n+ W
EXEC sp_add_job & r* i2 w& L* j/ g# Q3 q. D; Q
@job_name = N'IncreaseUserCashJob', -- 作业名称
/ v* g$ W8 e- [( x* P @enabled = 1, -- 启用作业* q! ^8 j: ?3 K0 \, E/ l4 X: w* {% h
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改; x% O! N' X+ [5 y5 G
@notify_level_email = 0, -- 不发送电子邮件通知" A! }* U+ v7 e# L4 L
@notify_level_netsend = 0, -- 不发送网络消息通知' ^$ x) p3 U8 U9 o0 T9 i5 _
@notify_level_page = 0, -- 不发送寻呼通知7 [ \) m( F) g% v
@delete_level = 0, -- 不自动删除作业
+ C. z% @! X) V4 i @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
- i. c$ C+ Y5 R @category_name = N'[Uncategorized (Local)]', -- 作业类别+ `8 w4 a# a: j! U7 X
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)6 B, ^& S! a) W4 L8 a# ^# e6 ?' h
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
W7 E0 l$ K/ T; gGO% P2 ?! g2 m( q1 h3 L5 D# H: ^/ m
( e2 T& x1 ?2 t8 n4 E6 _-- 为作业添加一个步骤/ y; x3 D) g6 y0 ^, P$ X
EXEC sp_add_jobstep . [ I1 |) W v) G i n( k
@job_name = N'IncreaseUserCashJob', -- 作业名称& @# c8 F/ [2 N# t
@step_name = N'ExecuteStoredProcedure', -- 步骤名称( G! S, }6 o1 M7 ]: D7 F
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)8 o& X- l4 u2 K6 ]5 a' X8 _2 F
@database_name = N'account', -- 指定数据库名称
I! a! \8 N( F& S7 ~8 f# e6 n+ x @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程): c8 J/ {' V, C7 J6 f
@retry_attempts = 5, -- 重试次数% r, v2 N! K6 m! n1 _( v
@retry_interval = 5; -- 重试间隔(分钟)
/ m' y; R! ?, t& @GO
' c) a6 D" U1 L% h) w& Q
9 r! j- p& b) @8 d-- 为作业添加一个每分钟执行一次的调度
; h% f, J" L' qEXEC sp_add_schedule 5 Q- }9 u- w. A% V% J0 Q, i
@schedule_name = N'MinuteSchedule', -- 调度名称
+ l- }' j6 X! ^6 {9 |8 E: M @freq_type = 4, -- 频率类型(4表示每日)7 I; c" O. O( Z" s4 e# [; N
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
T* D! X0 ?( m. V; o3 f! n @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
9 M" _' S3 h8 }$ k; e S @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)+ E, W8 P+ W5 J3 h
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD) Y/ e0 N, \- o* e4 u0 Q e
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜) Z1 O& `/ H. R1 W+ D0 i( s) q% l
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
/ y0 v* k+ v# g- }' ^0 Z @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
+ ~- A& h* a# J! fGO
! ?* K/ W+ z* f, \8 B* D, M; b: M; T! I) [. ?; f; {( ^7 X
-- 将作业与调度关联起来
Y7 H; Q+ [0 |/ W# LEXEC sp_attach_schedule 6 m8 d+ H$ X. E
@job_name = N'IncreaseUserCashJob', -- 作业名称
2 T9 T% b2 l% ?4 M7 R0 d @schedule_name = N'MinuteSchedule'; -- 调度名称
9 g8 ^: [+ x; G: G9 g5 gGO
" F" | d I: @# R# s, a
$ p5 U* } }9 B5 {-- 提交作业创建到SQL Server Agent5 `* n8 {2 W* V0 i8 D% x7 R
EXEC sp_add_jobserver
% I# j1 h5 A/ l0 q/ ~& i @job_name = N'IncreaseUserCashJob', -- 作业名称
- A& O6 |$ ?* F4 d: r3 a# f @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')! H# c, r, H* r- d) C- o
GO
& Q$ |. v* `; @% w6 J/ x) M' x- ]. U: w! }
# d6 \* |9 W/ y/ f8 A
! n; a( d- z' w+ D$ h$ j( Y
5 O" f& P' H0 I- F
; [- b/ {# B2 f$ b Q2 G" I
|
|