中级会员
- 积分
- 303
- 金钱
- 207
- 贡献
- 22
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------) |! G8 B2 T+ b) B/ Q4 y3 F; b# t
USE msdb;! S6 T: U0 D; V' X g
GO
! @6 I( p- @3 `8 Z; m+ y: p& z, [* `; H. j. W
-- 如果作业已存在,则先删除它
( H! }9 P2 D5 P- f6 MIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')! J" |& v! X6 }1 j
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';! R2 D6 U, [ \' }! u5 @# d
GO0 b1 Z- Y" v9 c0 i
- L, J) E4 u8 i" J
-- 创建新的作业8 C9 d0 u: G) Q7 @6 ?$ h2 x
EXEC sp_add_job
6 h/ \$ Z: l2 `5 Q. g @job_name = N'IncreaseUserCashJob', -- 作业名称' D! D, }3 T0 e# f
@enabled = 1, -- 启用作业
4 B+ w1 b$ o& s! `5 N @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
( b. P+ G p2 h. A: M- d9 v @notify_level_email = 0, -- 不发送电子邮件通知; R$ A$ P& c) V7 K G- X
@notify_level_netsend = 0, -- 不发送网络消息通知
1 `) L2 F2 C: C! t' O8 }4 a5 Y3 z3 ~ ? @notify_level_page = 0, -- 不发送寻呼通知/ U- X. W0 `( ]9 D
@delete_level = 0, -- 不自动删除作业& [" T+ M! X% R! U9 M
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
/ ^* k, N4 |8 ^+ [" J; X- [ @category_name = N'[Uncategorized (Local)]', -- 作业类别
/ E2 m5 _; x; u# v3 V @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)6 Q% j) K, Z7 j! I
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
- o1 g9 j+ f& x! O$ |GO* q8 g. L O( Q
; W: T+ Z @5 l: @! I' {
-- 为作业添加一个步骤
' t9 k3 {+ l+ K4 c& `5 ]* GEXEC sp_add_jobstep
$ i9 D0 {2 o3 X& p @job_name = N'IncreaseUserCashJob', -- 作业名称
9 C4 I$ h7 ^1 m8 Q1 s4 A @step_name = N'ExecuteStoredProcedure', -- 步骤名称. e& n2 z7 N4 T1 ~/ X1 q2 l6 _
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
: l$ \2 ?. c( ]1 p2 f# W @database_name = N'account', -- 指定数据库名称
7 [, m% F/ x4 V6 l& Q7 @3 Z" O1 ?7 f5 I @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
7 O% M, H5 _" p: U @retry_attempts = 5, -- 重试次数
7 I/ N; W2 d4 X$ l& k( c$ r @retry_interval = 5; -- 重试间隔(分钟)
, m: n( ?* c* j7 B% \GO+ ^) x p! x& G+ g" \8 ^7 z
7 m. B# ]& W; k& U, y# ~
-- 为作业添加一个每分钟执行一次的调度4 T3 z& E/ y5 i
EXEC sp_add_schedule 4 Y2 x& ?$ J: A6 k
@schedule_name = N'MinuteSchedule', -- 调度名称& p0 X" z# ~* x
@freq_type = 4, -- 频率类型(4表示每日)
A% \( |8 q* o @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
& i" d- F% t& B6 q3 Z( H @freq_subday_type = 4, -- 子日频率类型(4表示分钟)- O- z7 y. R, u2 n
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
5 [" F) P5 I' G- V1 h w @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
: R1 f) {! g+ Q( N @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
4 U2 ^/ P) B3 {) o0 l% i @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)5 R. `4 f8 r B" o
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
" l) g4 ^, v4 j; G9 f7 [# JGO6 {+ n0 ]" }7 ]9 v5 M
$ y/ ?3 P0 }: k/ U. \3 p% ]4 i; ~7 e-- 将作业与调度关联起来
6 H, X8 R1 |( wEXEC sp_attach_schedule 0 i$ S3 U3 F) u
@job_name = N'IncreaseUserCashJob', -- 作业名称7 W2 ?( p" }( C: H a$ G
@schedule_name = N'MinuteSchedule'; -- 调度名称
+ E7 [8 u3 d" `# TGO
, ^8 t6 u X+ R! V" V6 G2 Y1 K. L
-- 提交作业创建到SQL Server Agent9 b. `) m% Z1 e& \6 C& Q. r
EXEC sp_add_jobserver 9 S9 i! j. ~8 R$ I8 d
@job_name = N'IncreaseUserCashJob', -- 作业名称: a3 H0 A. @, W' e( Y
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
% |% l# d4 ]" p* V8 @# EGO, H% ?8 Z" N/ V7 L8 l
* B1 P& Z9 b" d6 I) j b
# d g- U9 e- S
5 V( x5 K+ B! f; w( v) a% }. ^) ^$ d+ u7 `) H# g6 |% ?
, A7 y& W6 ~9 N+ V1 J9 L0 `: Y |
|