高级会员
- 积分
- 891
- 金钱
- 742
- 贡献
- 72
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------) W2 b2 ~7 D; x$ }8 z" M
USE msdb;
6 |8 @! P6 ~# U- [! QGO. T- Q8 P- J1 z9 Q2 ?2 M
3 {) L: j2 \' c-- 如果作业已存在,则先删除它
* U& t7 x2 C* D+ `* K* K& p8 u" ?IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')' D. j' i9 Z6 F, U
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';* j4 [$ o0 m1 g; x6 L4 W3 `9 a
GO$ j: Z- C6 v8 T8 q, c8 H
0 f1 G- ~: h+ @; d- E
-- 创建新的作业8 b3 K2 M+ I' T
EXEC sp_add_job . ` B W! ~( W: ~
@job_name = N'IncreaseUserCashJob', -- 作业名称
* j/ p, H/ S+ b+ H- z @enabled = 1, -- 启用作业1 P0 ~( z" G& Y
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
! f8 n: G J/ {5 ^/ ^4 j' f5 P @notify_level_email = 0, -- 不发送电子邮件通知
' I5 }6 d( ^' X4 ? j5 b, }& y @notify_level_netsend = 0, -- 不发送网络消息通知" w; I/ D5 `3 j! L
@notify_level_page = 0, -- 不发送寻呼通知% C) j9 L2 g3 O4 n
@delete_level = 0, -- 不自动删除作业
1 `1 P; V/ V& i! T+ b- \4 S1 M* ^ @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
2 C+ ]# e- \) F8 H9 r @category_name = N'[Uncategorized (Local)]', -- 作业类别
e. A7 Y+ ^9 Y: a D4 ` @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)1 u B0 }9 S' y. a! S
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员4 a4 W6 [4 [/ [# b K8 ^" |
GO
9 W" c4 e! j+ b" b3 D4 y+ ^* j
-- 为作业添加一个步骤" V2 f: R8 E" m& G
EXEC sp_add_jobstep
2 o1 |0 J( i* w' Q5 C* ~ @job_name = N'IncreaseUserCashJob', -- 作业名称. Z6 r3 z, g3 G# e8 C7 G! C! ]
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
# B3 U$ s Q$ U4 Z0 W2 z @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL); w9 p+ ]1 `7 V/ w) j
@database_name = N'account', -- 指定数据库名称0 E/ [6 E, S( i! [; ?6 Y
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
' s5 Q4 C( H* U0 y" P8 P& l i" z @retry_attempts = 5, -- 重试次数 H X4 X9 i5 _* R: U9 P5 f
@retry_interval = 5; -- 重试间隔(分钟)! F- L7 Z, |, [- t8 c. [
GO
+ _3 D& t: E, L7 [( m. A+ H+ R# V, F- s! h( P. N4 u- S3 D
-- 为作业添加一个每分钟执行一次的调度- k/ u3 P$ T( B8 S1 v
EXEC sp_add_schedule
0 k$ G& s/ [* T @schedule_name = N'MinuteSchedule', -- 调度名称
' i9 G- z, M/ V F- F. U/ {0 x @freq_type = 4, -- 频率类型(4表示每日)3 @/ a& E! K+ z* p y! B
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行* p% _4 T3 Y9 U+ K. G- J
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
0 _+ q3 g) Y* w9 j' `5 ` @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)- o7 R- Y0 _! Z- f' [( H( I
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
2 v+ A6 A" ], \7 |8 h @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
8 \" U% ]3 {* w$ P- k! l @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期); A9 i# H; j2 Z( b7 ~* A* |; }
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
2 I1 M) ]) C0 u JGO5 d S) l- B$ t7 {( `6 s
& B9 O) g$ t* b- h
-- 将作业与调度关联起来% l" L' r, G7 v; ^
EXEC sp_attach_schedule ; d- y! J5 m0 ?
@job_name = N'IncreaseUserCashJob', -- 作业名称1 S6 J- x3 E: D; w
@schedule_name = N'MinuteSchedule'; -- 调度名称$ o% N9 ^' m# D+ p5 S8 a+ u
GO7 r7 N) d _* J3 a$ C/ Z
3 O# p# @( G( R-- 提交作业创建到SQL Server Agent
7 S, y/ t( G/ P. ^' dEXEC sp_add_jobserver ( i6 L+ m6 c9 T/ t; y
@job_name = N'IncreaseUserCashJob', -- 作业名称5 D0 m$ @& |6 c9 E/ ]2 N6 ]6 v
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
8 V- A" U# W0 u$ p2 w( Q4 R3 ?4 C' ?GO
( ~& i5 x; E) k/ X9 y5 [2 k: R: b# o$ [& m/ G
) r6 {9 U( l3 E
8 C, k% ^+ M7 p |5 ^
8 {7 f* [! D0 Q/ ?9 J0 q# p* e5 t3 i5 y6 M# W
|
|