高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------+ f, o- _1 i# B2 @/ Q" H4 B
USE msdb;
; f5 u- Y. d( T2 H9 g# D! JGO2 i. E# L3 y B$ i1 [+ d
/ N w9 U: q& Y-- 如果作业已存在,则先删除它1 V6 D. Q/ j( `$ w7 H: L
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
+ z3 M+ `6 r* H+ D2 [9 x EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';- f+ l# |2 _* N7 s1 ^$ a
GO
# `( X9 k1 d8 v e h8 w2 @, K# W6 B! P) h
-- 创建新的作业3 b2 |( I/ ]- Y( `/ P( i
EXEC sp_add_job
' b% b; C9 W; @% r5 V. _ @job_name = N'IncreaseUserCashJob', -- 作业名称
. ~: p) q9 D. T7 Q( Z# _ @enabled = 1, -- 启用作业
$ J! j6 W! k* s) G @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
% ~1 q3 g6 o# p3 `) t2 o3 a, t @notify_level_email = 0, -- 不发送电子邮件通知) f* J) \: O- `! v
@notify_level_netsend = 0, -- 不发送网络消息通知; ?3 k+ v: G9 K
@notify_level_page = 0, -- 不发送寻呼通知- g$ B6 J) v8 E7 z- \. E4 k
@delete_level = 0, -- 不自动删除作业; {$ _9 Q& |8 u8 V" D3 [
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
3 X2 b/ r7 y3 \2 r. z% A! Y @category_name = N'[Uncategorized (Local)]', -- 作业类别$ n5 C+ N+ S* S% m
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
: z4 i& D6 y, v! Y7 a7 ` @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
3 d& r# {" A) b1 CGO. v- Q* I, a$ w8 D; t. N
( s. o7 d, Q/ w" R; ^ {' M* H O: d+ r-- 为作业添加一个步骤) W/ k9 S0 M; A1 y1 K
EXEC sp_add_jobstep
9 x! |# m3 {( o2 o3 c. i @job_name = N'IncreaseUserCashJob', -- 作业名称6 m# c) j0 C3 y- q0 y
@step_name = N'ExecuteStoredProcedure', -- 步骤名称- y) k) K4 W# Z8 u* F( \. L/ Z
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)3 V, ^6 p3 l( u5 G0 e
@database_name = N'account', -- 指定数据库名称
. N6 `# d# [# A- U0 x @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
4 g* b" P# @4 r- W/ ?4 I- V @retry_attempts = 5, -- 重试次数
) y3 ]3 d8 c) d3 S# c3 o @retry_interval = 5; -- 重试间隔(分钟)
$ B2 p5 x& }( f5 e5 |GO
( t5 X4 {4 y' `: k' |5 V/ _& F
! G) H z- ~ `+ G: D-- 为作业添加一个每分钟执行一次的调度
* j! L9 H0 _, R1 W% t, K3 |EXEC sp_add_schedule
5 L1 l- K' ?4 I @schedule_name = N'MinuteSchedule', -- 调度名称1 }( w: S5 ?: o f; c+ ]* X
@freq_type = 4, -- 频率类型(4表示每日)
" Y3 U C6 G! m- `3 M7 M0 v @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行 Q1 F6 s K2 N6 ]4 I" r. r
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
' s/ M# M2 F% G: Q. p, F @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
- S3 |, X# o- R$ {6 r1 F @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
7 n. T) V% C0 A- T @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)4 D* b' [& P7 [8 s8 l9 ~' t
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)3 L5 s( m$ l0 k4 z$ O- k# }/ e
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)& {0 a' d T! j9 k) l9 Q- i' ~
GO
0 R s8 g" }/ _& l, P3 ~% G' N3 Z& {4 R. }
-- 将作业与调度关联起来7 n: [- k) c+ F& R1 G8 @$ {; x: M& H
EXEC sp_attach_schedule
1 C8 ^3 b* r! _: k: N' e `+ A @job_name = N'IncreaseUserCashJob', -- 作业名称' d' l2 \3 _4 D$ ^
@schedule_name = N'MinuteSchedule'; -- 调度名称
# T0 O# p3 r: |. FGO0 R4 m" k8 G3 ]/ ~' x" l$ d
" c9 o1 ^6 J G- ~9 `* Z" e' T
-- 提交作业创建到SQL Server Agent
6 v8 \! ^8 f* m# P4 K. U, DEXEC sp_add_jobserver
9 Z7 F' F( _% ^4 t6 A @job_name = N'IncreaseUserCashJob', -- 作业名称
+ r( g) Q4 E9 `' b/ u$ A @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')2 V& i' o% U- X8 K: i
GO
6 S/ p) T' E$ s: }7 H
0 V3 t9 {! a. \( W( c T
+ \% ~% R) x+ a2 k
! p3 ~3 R6 U! u6 c. L3 ^2 n" Y0 W- b% F" I
$ o/ }- ?7 P8 X+ f; U% Q
|
|