高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------( W1 M; C" o C, \1 k' u* ~" e$ y
USE msdb;
( I7 ?( d2 A: S7 S: SGO( b+ r a; W5 M2 b5 n8 O
3 n" g, o' A* x l-- 如果作业已存在,则先删除它 `. k6 B% E0 A' ~# y
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')/ U" Q/ g7 w2 Y5 A# r, d
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
! H+ j% Y+ X, X! u5 g/ wGO1 ^; n0 J! C% v
; ^" x% h2 T+ q1 o; \) v
-- 创建新的作业
' r$ k: O. C `8 a) ~EXEC sp_add_job . F* X+ x8 M# ?: R7 K) w$ X
@job_name = N'IncreaseUserCashJob', -- 作业名称
0 p1 X! q- Y. ~9 z. {8 T+ x @enabled = 1, -- 启用作业$ ]1 k2 M9 U3 Z. Q
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
1 ?* I' q& H5 J6 O2 T# ]' H, q! }* S @notify_level_email = 0, -- 不发送电子邮件通知
" k+ L6 s: _; k6 t4 w m$ o @notify_level_netsend = 0, -- 不发送网络消息通知
1 W$ P: O6 g& {( a @notify_level_page = 0, -- 不发送寻呼通知
1 c( ]6 j& D& `. @ @delete_level = 0, -- 不自动删除作业9 h) K/ Y4 ? B( Z; {
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述3 p# ]! m) A- `) P) g
@category_name = N'[Uncategorized (Local)]', -- 作业类别' o8 l3 Q6 v7 A* C5 ?
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)( O8 |1 k; D# ~' W. d7 u" J. h
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
4 O G8 G0 ^8 |3 e' G% j* E5 R$ mGO
, r R- |7 O: A7 o$ M" C
! ?4 {0 p9 Y: b$ W J-- 为作业添加一个步骤' j; g1 `" ]9 Y6 z2 `2 n [) b$ {7 t
EXEC sp_add_jobstep
+ {6 @% h, C% I4 d6 b/ O; c% T @job_name = N'IncreaseUserCashJob', -- 作业名称
4 d' Z! D/ K/ v: h1 j3 v6 ?: g @step_name = N'ExecuteStoredProcedure', -- 步骤名称
7 z( G7 Q9 Q" T. y6 ^ @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)/ |, h) n. j: L) F/ m: o9 O
@database_name = N'account', -- 指定数据库名称
, a- ^% L" e1 {5 u @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)6 e! L; i! W8 ]) {3 L
@retry_attempts = 5, -- 重试次数
$ B8 r& G7 n- t @retry_interval = 5; -- 重试间隔(分钟)
+ E/ ^5 ?. w: W3 N, OGO
) z$ i5 v" r' i8 u
0 b$ n, P& S, ^# c-- 为作业添加一个每分钟执行一次的调度
2 ~% d9 @0 I6 j# l! }2 n; ZEXEC sp_add_schedule
- X6 c! [- A, ^2 R0 S( q @schedule_name = N'MinuteSchedule', -- 调度名称/ c% K% ^! H! u9 V$ v- X
@freq_type = 4, -- 频率类型(4表示每日)9 o R9 H) Z# d" K' x: O* F4 Y; Z
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行( J( D8 `, w; R4 P7 J: y$ I* z. n
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)( l" ~4 p$ [6 p/ q e
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
4 a$ I/ Z7 }9 L' i' U$ r @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)5 y, F( d" [+ @5 h* T7 R, g
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
k& I" i5 E' x, n8 W% F5 @ @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
. z' r4 N, \$ H) p& U/ B @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
p" w7 ^# c0 |6 y( jGO
3 H/ @* a# J. G( S/ z
* I% J, x- ~5 o' n! c% @; O-- 将作业与调度关联起来, y3 }; J* r' U8 @
EXEC sp_attach_schedule - t) H) Z$ `: V# c0 T( \) p1 A/ N
@job_name = N'IncreaseUserCashJob', -- 作业名称
' Q% r) s, n9 ] @schedule_name = N'MinuteSchedule'; -- 调度名称8 f3 \' N6 g- W& V, P4 F7 R3 k
GO
6 z+ s* n8 K$ S6 [+ N, X" w& T; j( [9 E6 b& H
-- 提交作业创建到SQL Server Agent
9 R6 L5 B1 e' Z" z% I4 WEXEC sp_add_jobserver 5 b h* i) K4 ?4 V5 g
@job_name = N'IncreaseUserCashJob', -- 作业名称
8 _/ F+ Q# v) e, ` @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
' p- G- u! u6 {- y7 T* @; `& K: @8 L; lGO8 r2 w9 I& a: m9 r* c/ z/ k9 y6 a
7 L% h& }/ @5 s, H# l9 I' T3 | e' c ]1 r: N2 q
9 u9 ]4 T9 x. I6 \# H% S0 N
2 i# O* U k5 B" Y9 [. D3 B% K, h% }$ g+ y* T; s7 n' o/ R
|
|