高级会员
- 积分
- 870
- 金钱
- 730
- 贡献
- 63
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
) ?0 D1 e0 g4 o* u1 {USE msdb;/ _* t. b6 o* R4 j
GO: U3 S3 X- R" x/ p7 P) M
P" f5 T$ m6 Q# z" [6 Z-- 如果作业已存在,则先删除它( i& H9 E) l8 z1 t
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
, n/ g- w! I9 `+ Q& w# Z2 O+ ~& u2 z EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';% E$ u/ E6 s/ T+ ]
GO
$ m0 h% j2 [- J+ t/ O! t5 b0 t! U6 }
-- 创建新的作业$ o% u% c H0 ^8 v% I5 f- i9 X
EXEC sp_add_job
1 I3 j8 G3 l: V) [1 k @job_name = N'IncreaseUserCashJob', -- 作业名称
9 J( W; C! r1 d& e$ Y M0 n9 F/ k @enabled = 1, -- 启用作业+ r: T4 I" ^. [$ J
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
, N" b8 t5 _. V" V( Y- @ @notify_level_email = 0, -- 不发送电子邮件通知7 i' |+ P6 V( h( R9 G# K& e
@notify_level_netsend = 0, -- 不发送网络消息通知
+ K) d$ C3 t) p @notify_level_page = 0, -- 不发送寻呼通知
7 z/ c$ K% p- C1 y1 f5 W @delete_level = 0, -- 不自动删除作业% j$ H6 P; c. h. R- L
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述- }0 Z" I; ?+ g
@category_name = N'[Uncategorized (Local)]', -- 作业类别& [. B7 y. c6 f+ L* W
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
! n- v/ f8 H0 C @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员& y$ t) {+ ?* Y- f5 F
GO
3 u0 a9 T% y& Y0 O0 W8 x4 i- i8 Q( J$ p% X( O) H
-- 为作业添加一个步骤
/ E1 h9 N: ?9 o& I2 l6 w# SEXEC sp_add_jobstep
3 S1 S4 p% U# A+ n @job_name = N'IncreaseUserCashJob', -- 作业名称
' q s+ }- n# c" F! M @step_name = N'ExecuteStoredProcedure', -- 步骤名称0 g4 V4 p6 x7 g6 G) M1 S! Y1 k
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)/ Y1 y7 k! g8 l2 N E
@database_name = N'account', -- 指定数据库名称
P* h. t5 x6 q( l2 H9 g- G3 ?: P @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
% w" Q |, _5 I# S- {. M# l @retry_attempts = 5, -- 重试次数
+ H' q' b2 F- _$ d# e2 U @retry_interval = 5; -- 重试间隔(分钟)3 w6 x- i' \) m8 @7 d2 N5 u+ z
GO
" d! a$ a+ u/ V) X. I. ?/ n8 W0 P- }7 b4 J
-- 为作业添加一个每分钟执行一次的调度2 {% k$ k0 f; z7 N# N
EXEC sp_add_schedule
: i6 k; F& k; J! o3 r8 ] @schedule_name = N'MinuteSchedule', -- 调度名称0 w9 P) F0 h! h7 T& X& R! Y
@freq_type = 4, -- 频率类型(4表示每日)
- C+ a$ m% H6 B b$ ?) N! R& L1 Y @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
9 W7 {4 Y$ U( q @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
; e' {3 N2 {3 N$ t/ H5 o( n0 G @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
/ e1 c9 A( D) g5 L4 O. X3 J @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
1 q' I% I: A2 o5 a+ w9 z @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
5 I9 y5 O) b4 ~+ o5 C8 [ O @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
" R& d0 U( q6 F @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)/ z; w! A* F9 \& ]/ B$ S, w9 G& W o
GO
3 i4 t! Y( [" H. k# m/ m. v9 _% O6 N, A8 X! {- V
-- 将作业与调度关联起来! o, |/ y j. [; K- ^) ^$ U
EXEC sp_attach_schedule # Z6 ^) ~0 o( r% v" V
@job_name = N'IncreaseUserCashJob', -- 作业名称
6 P1 |! F6 j6 w3 h. v @schedule_name = N'MinuteSchedule'; -- 调度名称8 h) g( m" j$ f8 r
GO7 Q/ p5 P; C9 }7 W0 N
0 g2 n# L% ]6 N, s3 B7 u-- 提交作业创建到SQL Server Agent
6 I7 y1 h$ m5 i7 {, ]" D& jEXEC sp_add_jobserver 1 I: p: h3 t3 C; ?+ ]; @
@job_name = N'IncreaseUserCashJob', -- 作业名称* a& v( J. q5 l
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')# I/ ~9 c* n8 |" p$ y: x* L* W
GO/ C3 k7 y2 J4 Y$ @
3 ]" s' K. V2 @0 I; ]3 [/ i9 K9 ~( e+ y$ Y: m+ u! j
! f' ]) @# ^- v3 R: l6 M
' X2 a z* C: A
, _! k9 W) y& q |
|