高级会员
- 积分
- 870
- 金钱
- 730
- 贡献
- 63
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------3 K' _7 S3 f: A1 G( _
USE msdb;, p3 [+ n c0 E$ ~) n
GO: v8 X8 C: L1 J& q6 G% e
8 t2 B) L: P. b. S
-- 如果作业已存在,则先删除它
, r& r4 d7 L: E0 w% ^" o, q6 d* OIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
1 F% S* t0 S9 ]; \7 h EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
; t- q6 ~+ Z }4 P9 M" cGO0 R# x* o2 i2 O7 C
: [% s' D: Y3 z% P1 K-- 创建新的作业- L+ T1 b9 b1 ?7 @, m7 T
EXEC sp_add_job
# h. g6 d" w9 X& t$ K6 } @job_name = N'IncreaseUserCashJob', -- 作业名称
$ E$ s- n3 A1 ~* Y0 h! ~0 S @enabled = 1, -- 启用作业
X/ O# t9 ^7 U9 Q g: }5 b @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改9 `9 @% V1 f8 t# ~/ Z2 k
@notify_level_email = 0, -- 不发送电子邮件通知8 h H+ [2 i$ _1 N
@notify_level_netsend = 0, -- 不发送网络消息通知
8 K/ j$ r* x1 ^# K8 Y! B @notify_level_page = 0, -- 不发送寻呼通知
2 u: C+ ^" O! G; V3 {% ? @delete_level = 0, -- 不自动删除作业2 M. y: G: n9 U
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
: M1 [ }# H4 b @category_name = N'[Uncategorized (Local)]', -- 作业类别1 W0 M# @' p' {. O7 g" I- w
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)/ F+ u9 Z4 S3 @( Q! h( A9 I
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
) H5 v: `& W w) B s( s: @GO* j3 c# q+ K, y6 [) r
- O) ~/ r; p! h7 D4 Y-- 为作业添加一个步骤% r7 _) N. r. J2 i
EXEC sp_add_jobstep 3 k4 {/ P% L* ]6 \. l; M
@job_name = N'IncreaseUserCashJob', -- 作业名称; p) l8 ]2 H7 H/ Y% H2 _
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
1 a: M& `' P2 w8 u$ ^+ F$ H+ x @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
6 K" @! f9 x' Y9 I; K9 s @database_name = N'account', -- 指定数据库名称. x8 u+ l6 c2 B; F/ u
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)4 I! A6 a' n U
@retry_attempts = 5, -- 重试次数
j9 q, E7 y) |! K" m- r5 G4 d @retry_interval = 5; -- 重试间隔(分钟)
2 _5 }1 ~% ?# O) D tGO
0 u7 I0 h; K8 o; b
0 T4 T8 g3 D% K- |-- 为作业添加一个每分钟执行一次的调度/ E i! d3 z, a9 K& e
EXEC sp_add_schedule
o8 W$ E9 c! A$ V2 K' a. T% } @schedule_name = N'MinuteSchedule', -- 调度名称0 U0 r" F7 v" ]# C E; p# ^- D
@freq_type = 4, -- 频率类型(4表示每日) V7 m- n7 l# R9 T
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行1 `! }. B0 x3 T1 q0 V# Z. @8 i
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)) ]$ v5 T, Y: i0 K& b% u6 u: a% v& _
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
( g/ v9 C' B" D* c+ H @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
$ p0 U# A, X/ x5 [0 l @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
# y7 u* m9 H. p" I! Z" v @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
, O% z- C, x: S. E; k1 n4 w7 z; O$ U @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)3 M) h+ b! S7 L2 P
GO! }' ]% t& ]& R7 Y5 A2 j, D B
/ M6 x8 N7 X4 K& R
-- 将作业与调度关联起来
, {! L9 P. m/ Q* A# d* r9 fEXEC sp_attach_schedule
& O4 y+ c0 E, v4 e: x @job_name = N'IncreaseUserCashJob', -- 作业名称( Q8 q0 f0 L/ y, ~0 A
@schedule_name = N'MinuteSchedule'; -- 调度名称
O2 P r- i# `) rGO
) S5 y6 t; X" _. e1 K) O5 b. k
' U4 J) M1 M: Y1 }-- 提交作业创建到SQL Server Agent C* I0 p6 P5 S
EXEC sp_add_jobserver 7 @ Y" @4 q4 h2 t1 Q( x
@job_name = N'IncreaseUserCashJob', -- 作业名称
" v, B' ?9 v# a9 M0 q& f$ v$ t @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')6 J' v8 ]5 g' ^. Z0 O
GO) z R. m& T# P! O3 _3 v2 |
5 U0 [$ l& E2 m1 |
, n; Y' r( B% @1 m1 `; V' x
& W/ w( {: ?8 }/ w
( G( o' H, v) y/ v, V* T7 J
% I: ]5 Y2 P K! h' ] |
|