高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
' v+ j; j f, @0 t- Z6 S+ l: j- {+ MUSE msdb;5 Q- ]/ `, F" l! ~$ Q* ]
GO
0 f4 k+ i6 L* r" y# ]/ L, l3 B) |' w
-- 如果作业已存在,则先删除它
+ @ t! p; h, bIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')$ H( f) k' @( R/ ^) z( ~
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
- x+ w2 e2 Z' fGO& _6 f& @) e2 i# u0 E+ B
+ n2 |" {: q% u" c6 m5 Y4 m" h9 N-- 创建新的作业
( x4 y) P8 U) Z" V% ]+ mEXEC sp_add_job ; P7 X* Q+ r }+ l
@job_name = N'IncreaseUserCashJob', -- 作业名称0 J: B% g* N+ { V0 {
@enabled = 1, -- 启用作业5 r' I ~9 H+ c9 g) b; n% f! J7 q7 F
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
# L9 ]# c# |# [, }8 W @notify_level_email = 0, -- 不发送电子邮件通知" N4 _* P9 y" h, v% q! |( I% X
@notify_level_netsend = 0, -- 不发送网络消息通知
b' R% h* l4 K2 s7 S @notify_level_page = 0, -- 不发送寻呼通知/ _7 q: _, R0 m0 P8 d+ i
@delete_level = 0, -- 不自动删除作业* b/ z1 \7 A5 [3 y1 v' J& }
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
' e5 ?8 j9 _) ]5 F8 Q5 L @category_name = N'[Uncategorized (Local)]', -- 作业类别" o, q. ^: x9 _: i- w" e) V7 Z0 D8 y
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)1 l; E X# b' p
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员6 c% o/ Q9 j% ~, D
GO0 m( r6 `4 s" o. j5 K: M K
( l' D; e9 F, i. X9 p-- 为作业添加一个步骤% \' Z j. m0 X4 q- h
EXEC sp_add_jobstep
+ {$ Y% Y+ ]- K @job_name = N'IncreaseUserCashJob', -- 作业名称
( o* k, X4 ?( w5 P+ I4 D @step_name = N'ExecuteStoredProcedure', -- 步骤名称" q$ A4 h/ u0 B" Y6 k, M3 p
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)+ n6 ]1 h! X9 D- s* r
@database_name = N'account', -- 指定数据库名称: I; Y7 m! n! R
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程): T* p, _0 H9 t$ b$ \+ x
@retry_attempts = 5, -- 重试次数! Z9 a) E$ D- q: k! i
@retry_interval = 5; -- 重试间隔(分钟)2 w. s! c, b4 {9 ~2 I
GO3 {3 ]& \! b7 X4 @1 K$ R1 W' q! V
; A3 P- l. \3 t, y4 g0 ~6 h0 n-- 为作业添加一个每分钟执行一次的调度
/ \5 d1 r w7 e. d% s' YEXEC sp_add_schedule " T9 T# W6 i1 m& q3 T; E$ A6 N
@schedule_name = N'MinuteSchedule', -- 调度名称' x/ p0 w* \# O, s8 P
@freq_type = 4, -- 频率类型(4表示每日)
+ C6 H, v. L( p! H7 Z3 ?! p* s @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
6 v7 C/ R. ^1 A) O, D @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
" J8 O) C& m# A+ H @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)3 y b$ [8 P7 Y) v9 W8 j
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)" D$ O# o! `" \8 m0 q
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
# u9 A8 F+ r. b" e( K: k @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
; p/ g7 N6 b# _& L' f @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
- G8 w3 s# [; I5 x6 [/ sGO4 d; C3 l6 K! n2 k# e2 c
6 S* j! n# T' J) H- P6 V
-- 将作业与调度关联起来% \8 m( g0 N% R& e+ u
EXEC sp_attach_schedule # x7 O/ v7 V. u: m- z+ F
@job_name = N'IncreaseUserCashJob', -- 作业名称. O" q H# N' O1 z2 Q
@schedule_name = N'MinuteSchedule'; -- 调度名称$ W! d& [: ~5 Z& t7 _+ Z( `6 {
GO
1 K9 Q. h6 z0 _, S, d, w# @; x: e6 L# {. }
-- 提交作业创建到SQL Server Agent
2 m" C9 j8 I$ E6 w5 t0 G% SEXEC sp_add_jobserver ( L- B$ T* X( m* c4 b
@job_name = N'IncreaseUserCashJob', -- 作业名称8 b) e1 ~" F2 l% b7 C6 @
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
+ W) G! O$ W& O1 ]GO
) j( c& N# W' E. e& b3 {6 U; N* X
7 Q0 u$ @6 ~* _9 I8 d8 f% e6 [8 Z. L- C
0 o8 n* @ e) {" [* v" w) `. V9 ?. E# p5 c" `
/ m% P3 |0 M: R& d3 f |
|