高级会员
- 积分
- 825
- 金钱
- 690
- 贡献
- 58
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
`4 a/ C$ p4 ^/ _* a; jUSE msdb;
2 g( t3 U) B& |& o2 rGO
" R+ f0 G( Y7 N* {' F% w/ T, e y& U3 B! A7 b5 b2 g
-- 如果作业已存在,则先删除它0 c/ b% Q$ U" f
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
) U! k# x! }3 _3 I7 q. | EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';) h5 e! |. U$ ]% K; L: q5 v3 w& Q) f
GO
/ Y# ]. ]0 X2 u5 e
# n' I4 U _4 n- X/ k; O( U1 W: z-- 创建新的作业/ ]1 ~9 X& W& K
EXEC sp_add_job
) m% g K9 D7 l p& S& U @job_name = N'IncreaseUserCashJob', -- 作业名称
9 l0 t. ? I3 F @enabled = 1, -- 启用作业2 _; e* S& x0 s3 A( E+ S
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改 x9 \1 |( x2 u- ~: b: O8 Z$ Q- h
@notify_level_email = 0, -- 不发送电子邮件通知1 ?1 |" i P3 I2 t/ c# _2 S
@notify_level_netsend = 0, -- 不发送网络消息通知
3 ]& k# \, H. x Z0 H9 C @notify_level_page = 0, -- 不发送寻呼通知
# l, G. n6 e# R9 c# Z- t @delete_level = 0, -- 不自动删除作业
. I/ b {! y+ ]- o* ~# w @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述& T0 q9 p. x: F' \. D$ g: t" G
@category_name = N'[Uncategorized (Local)]', -- 作业类别
5 O7 c _7 P# u+ i+ B/ l( t z @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)) g! t) R. H+ j( I
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员% ?$ v V' }3 U5 c
GO
/ x" t) S0 P3 W) m
* r5 w; e: x1 r5 `+ p-- 为作业添加一个步骤
9 L3 T. c7 v/ iEXEC sp_add_jobstep $ V7 o4 T' T7 f1 D
@job_name = N'IncreaseUserCashJob', -- 作业名称: p' }. E8 g: |3 j
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
5 }# J0 n! J; J7 ` t @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
1 d7 X6 ~$ u4 Q2 H( Z @database_name = N'account', -- 指定数据库名称
% P$ H' [) m6 F ^0 s9 L/ N4 y @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程). _+ f! K( R/ ?
@retry_attempts = 5, -- 重试次数
2 h8 _/ Q8 a$ a; Q @retry_interval = 5; -- 重试间隔(分钟)
+ k7 s" R6 ~$ b7 G7 v/ f. X2 Q2 jGO8 @6 K4 F7 n2 U; m
2 W5 L6 w; D. i' k* i7 j-- 为作业添加一个每分钟执行一次的调度
) C0 R( ^/ f O9 ~EXEC sp_add_schedule
. M9 I2 A' q \3 d% R" w @schedule_name = N'MinuteSchedule', -- 调度名称4 j+ p1 z9 [8 ~5 g5 w6 }
@freq_type = 4, -- 频率类型(4表示每日)
" w% B" n7 {/ ?3 W- X @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
9 J. [6 I# C8 @ @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
, i1 }( Z2 S7 Y$ C. l V: Y& Q @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
9 j3 E' x4 e) |/ t- L @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
' p; q9 t3 `4 {4 T b- z# G @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)9 _+ ~6 B5 K0 m+ L
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
3 Z/ e5 G) B3 l5 j @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
7 r& Y& m- [, g5 ]' L S/ N! AGO3 S8 o( J5 X" L3 K8 @, B; `
- l5 I$ x' m2 [3 i* j-- 将作业与调度关联起来' V8 @- I' e- y5 X+ u1 {$ A2 H
EXEC sp_attach_schedule
% R' x0 o$ W$ h0 M: e7 y @job_name = N'IncreaseUserCashJob', -- 作业名称/ j$ k& A4 E# B
@schedule_name = N'MinuteSchedule'; -- 调度名称
9 Q$ ?3 j: |4 A1 U$ y+ R! p# H; A3 tGO
, I; ^( R+ E. A# ]8 ?( E0 C3 W
+ c; K1 T0 U. e1 U \-- 提交作业创建到SQL Server Agent/ u# b+ ?1 w! G9 F: B2 ]
EXEC sp_add_jobserver
" @; Y4 c( v1 p% T @job_name = N'IncreaseUserCashJob', -- 作业名称
' I$ x/ A: b. R ^$ R @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')" S# d' V7 s9 n
GO
3 h* p; L; _0 Y" l/ ]- L/ Y: x
7 k, _. E0 ?2 }( o
) b) R Y* w. d
# O& M" y. @! D" b3 m
5 {! ]! }* \# `2 j: \2 @( X9 k; a6 E+ f2 ]/ K5 W; g4 J, {. ?
|
|