高级会员
- 积分
- 726
- 金钱
- 598
- 贡献
- 53
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
/ {; Y; L4 A% R2 r- bUSE msdb;5 e8 v+ f/ p s$ c% ]* j4 ^! y
GO
1 l7 O# @9 P' ]2 r V" {) E
: _2 A3 u+ `8 l, d1 K0 v6 N5 }-- 如果作业已存在,则先删除它
9 M, T9 k2 F* K' V: M$ |IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')5 {) E, X O4 y; Q& ~' ]
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';! l( v; C5 I* F+ w) u
GO' R. X) {) a: C2 u
3 j7 Z |- T0 c% D8 e: d. g-- 创建新的作业
9 N( _, U$ l) R, uEXEC sp_add_job ' k j# S( H7 s7 q8 t
@job_name = N'IncreaseUserCashJob', -- 作业名称
4 X* c! ^0 l C3 ~ @enabled = 1, -- 启用作业
4 G4 g2 T3 @9 R7 j' b& I# O @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改" t, @8 D" u$ s
@notify_level_email = 0, -- 不发送电子邮件通知1 M! V! J7 o8 {, Q* v6 h: E3 |
@notify_level_netsend = 0, -- 不发送网络消息通知
2 l+ Z( J! S$ t4 Q! P' J3 X, E @notify_level_page = 0, -- 不发送寻呼通知
7 X+ Q7 H4 W/ b+ v8 z) n' E+ m' h. M6 ? @delete_level = 0, -- 不自动删除作业% }8 Q7 ?5 ?4 G p+ v8 k
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述# y' A" f% Z3 g! F3 O/ ]# f
@category_name = N'[Uncategorized (Local)]', -- 作业类别4 X& K! \2 L8 o# m9 h
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
) q+ o' i8 Q8 C9 C @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员4 o6 H. {) s$ I% y% D
GO, B. x! t6 c* I5 d _. b n
8 }) M) A+ x. i6 n }6 f-- 为作业添加一个步骤
/ ~) h: Q9 p+ U3 D3 ]- ^EXEC sp_add_jobstep ; D7 l7 J% h H7 K# V: L9 _
@job_name = N'IncreaseUserCashJob', -- 作业名称1 P7 l( T1 d) P* X
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
* G4 e7 G% Q, t$ _2 ~ @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)$ _! Z" f3 `0 l# }/ u. g! d
@database_name = N'account', -- 指定数据库名称6 }$ R* i# q$ M4 u. H7 N
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
/ C# w4 g( N' o, }3 p% Z {! g @retry_attempts = 5, -- 重试次数
# a Z% z8 P- }2 A6 Y6 h5 V @retry_interval = 5; -- 重试间隔(分钟)
% t8 ]& H1 P5 X$ S/ y7 `8 lGO( i2 v z' w+ k1 O
: k% }( I8 l" m) j! {6 q* W$ u2 I-- 为作业添加一个每分钟执行一次的调度. W& ]1 l5 I* |* V q% d |
EXEC sp_add_schedule
0 I3 Z$ v0 r% V) L, S- ]/ W @schedule_name = N'MinuteSchedule', -- 调度名称
{- m" @8 ~2 P5 Z; R: O6 z @freq_type = 4, -- 频率类型(4表示每日)
. P" k% ? S Y4 x @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
' I1 }8 y$ k; K& h8 r6 \ @freq_subday_type = 4, -- 子日频率类型(4表示分钟)& h$ a9 O6 u, c
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)' Y1 [/ P. o% i) a( A1 o, j! j' q
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)6 H0 O! X1 M- A8 p! G8 m
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
% p0 p& Q5 Q( d/ h9 J @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
1 }) f! s, J! W @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
3 G6 Y: D* N+ ?2 tGO S3 J9 r# K( M; r8 u' k
+ g) n1 \3 w- J9 t2 h. ~: Y-- 将作业与调度关联起来
$ s7 A9 D7 M9 {, N- VEXEC sp_attach_schedule
0 z4 \7 }# a0 `& J; a) {0 Q @job_name = N'IncreaseUserCashJob', -- 作业名称1 B5 L+ x2 v& X3 n% s* D
@schedule_name = N'MinuteSchedule'; -- 调度名称
/ X; U4 ]# b$ _4 m/ A- EGO
. z$ ^: A" ~( {! x/ C0 {! M/ g7 ^2 o. f @, }0 z
-- 提交作业创建到SQL Server Agent
& L7 D9 U0 w% t5 X0 }EXEC sp_add_jobserver
# |% Q0 L5 |8 D- P1 J9 q6 i @job_name = N'IncreaseUserCashJob', -- 作业名称
. ]% ~6 p! x3 E0 v* t/ e @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')5 S/ m" x' w7 o/ W8 L% |/ U: ]; }0 y
GO E" Y4 C c4 b/ B% J
9 q2 R! J r* Q3 t
5 ^0 ]: t4 _4 o! z, I/ N1 ^3 `# k' ?; a- o7 X+ Z
6 Q- u. \/ p# t. K+ |8 ]6 L
( x3 D! v5 w9 f8 h- z* U$ ]+ C |
|