高级会员
- 积分
- 726
- 金钱
- 598
- 贡献
- 53
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------$ ?% G, a! f6 Z& ]
USE msdb;
, d: }: \3 u/ j5 C# J3 HGO
& N* T, h- l$ d! v- S0 \. I1 a( Z0 w" V* U# u5 L9 X' w
-- 如果作业已存在,则先删除它
. Q: X3 S& v; U6 q2 AIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
7 q3 W" ^. _8 r" d/ O EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';) G, a: u9 n; e2 L! ?, V; M
GO
+ }# i- ?" _6 z( b; ~, _* w7 d/ r
. y. j" M. ^3 f% P% }-- 创建新的作业
+ b2 W. S# P j$ V+ C, cEXEC sp_add_job 4 S! ]$ W/ W8 ?* R$ e+ K: Z& p8 _
@job_name = N'IncreaseUserCashJob', -- 作业名称. }+ l$ a2 W( ?5 o7 \/ `
@enabled = 1, -- 启用作业
/ S4 G; v' P @3 |/ } @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
! j2 N* t; f1 c5 z* a% O @notify_level_email = 0, -- 不发送电子邮件通知
2 ]" m4 u* R H8 d9 ~ n @notify_level_netsend = 0, -- 不发送网络消息通知
4 ]4 o- x; w7 u' H @notify_level_page = 0, -- 不发送寻呼通知
1 I7 s8 A9 @) `* F" J- ^ @delete_level = 0, -- 不自动删除作业% \: {9 o6 q/ y( I
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述$ \+ X( a) g2 {* Q- S
@category_name = N'[Uncategorized (Local)]', -- 作业类别
1 R! D5 d( m/ B- e/ U+ T" | @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)$ U1 Z3 }1 W# d7 m5 p5 C9 D1 {
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员2 m& z# J: G9 T. e; ?
GO& J( M i2 V( \: X9 F
: k* {4 f$ k. |+ |( W* e2 x, ^-- 为作业添加一个步骤3 s" L* W7 V1 ~! c: c. P
EXEC sp_add_jobstep
7 l' d5 e" i3 a$ ~6 K& b6 K @job_name = N'IncreaseUserCashJob', -- 作业名称
! W' |5 [7 M- B' u h @step_name = N'ExecuteStoredProcedure', -- 步骤名称
# B$ @& t0 C# U* |+ Q @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
6 y* x+ @( F! ^+ s! _ @database_name = N'account', -- 指定数据库名称- _5 ^' @9 |" D: }# ]
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程). L6 B# p e% a- I+ n- Y1 e8 F
@retry_attempts = 5, -- 重试次数4 z2 w r& F3 T7 V
@retry_interval = 5; -- 重试间隔(分钟)
* | M* B$ [* ~' SGO
9 \) M& F: F; ^/ h$ d
( O4 J: z6 j4 E0 ~. A3 f; {' h-- 为作业添加一个每分钟执行一次的调度, _" @# L: Y* r- q+ q7 i4 s
EXEC sp_add_schedule 9 _# P. g; e& B) b2 H6 d. k- Y2 f9 t
@schedule_name = N'MinuteSchedule', -- 调度名称5 q( j @- i9 W2 P8 v0 v
@freq_type = 4, -- 频率类型(4表示每日)6 w6 P9 O+ f. |% L2 T/ ]; m
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行2 E, k( e- o0 _& J
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)& i: Z4 N2 T# O# P0 M& N
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)+ b7 {& x2 D J, |% v. }2 |5 c4 e2 U
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)1 W4 \2 n/ c. J1 |4 F& \; z
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
. R9 c( I3 v1 |1 | @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
( e1 o ] j9 k! n0 H" C6 o* [ @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
/ u! U# y4 e( BGO, L6 J, n6 q8 _! r
F3 ~5 l$ p9 `5 z$ [
-- 将作业与调度关联起来: }+ w# M( Y1 j/ i+ H
EXEC sp_attach_schedule
0 J6 _) B Q0 e @job_name = N'IncreaseUserCashJob', -- 作业名称6 h& _ |% ~( ?! ]8 x1 i' x. ?, w
@schedule_name = N'MinuteSchedule'; -- 调度名称
+ N. V# A" T" J) _* Y, yGO
3 X+ v* T0 ]9 L& K8 X- [3 X
" g& }- i, x. ^- w; C-- 提交作业创建到SQL Server Agent
& F5 O/ u+ z6 ^. s& O' o( c1 x5 D5 A# TEXEC sp_add_jobserver * L, ?) x6 |) N3 S
@job_name = N'IncreaseUserCashJob', -- 作业名称9 [6 a/ j3 W3 k8 _8 \( I: _( ?0 Y
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
9 m) z. u5 n* P) bGO4 e5 A- W# r, `1 ?9 `( M K
* q/ M& T' [' k; R7 F; o! E. v. ]4 m! {* w' r, `
7 n- Q( Z! R& a
6 G& U& Z8 \3 G3 N8 C
9 u' R) H+ Q% Y$ X; H" `5 S
|
|