高级会员
- 积分
- 867
- 金钱
- 728
- 贡献
- 62
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
0 Q6 o7 o7 O' ]3 [USE msdb;
. `* k- ~7 D" `6 @2 b8 XGO
$ r: M" G% M& g5 |* {, I, [6 e
; W- r1 O0 f. f5 h# f/ V) U-- 如果作业已存在,则先删除它
" x2 a" P( s$ s; G. y6 a1 ]$ dIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')' g8 ^9 I0 d/ K: M7 g P/ f; a& J
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';# S: l' S, k* y5 S1 L
GO
0 @6 ]: D. [% x: q+ `- }# l
/ J" ?& E' z) r' D-- 创建新的作业
$ n1 c- F, s) I0 hEXEC sp_add_job 5 B4 A* y9 E" c3 o
@job_name = N'IncreaseUserCashJob', -- 作业名称8 W. S9 ~ \3 c" I% b2 ~+ t& K" V
@enabled = 1, -- 启用作业
% [! c1 ?0 W( ?% @ @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
, n& ^7 }! @* e0 I @notify_level_email = 0, -- 不发送电子邮件通知
& ^3 P0 _9 `8 y @notify_level_netsend = 0, -- 不发送网络消息通知8 m% i( D' c4 ]6 o. y/ d
@notify_level_page = 0, -- 不发送寻呼通知
0 l, e* m5 I, e7 L# j5 G3 W @delete_level = 0, -- 不自动删除作业# M) M2 u, `# K2 l" ~( w0 ]4 t
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
# u6 f; ?! h4 ?2 J: K0 p @category_name = N'[Uncategorized (Local)]', -- 作业类别" M5 E+ M v3 E, m0 j; v- H3 d8 E' V
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
9 J) Q, q/ ^. d @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员1 \+ n" @, s; m
GO
- [+ L4 @2 C0 |: U" Q9 D' ]% _2 n7 A, V9 O2 s; `5 A' B
-- 为作业添加一个步骤
- [* F: x5 L4 r8 M1 t0 EEXEC sp_add_jobstep 1 v6 H1 }3 Q- S* I- i/ U6 N' {4 \
@job_name = N'IncreaseUserCashJob', -- 作业名称
$ s" @4 ^# C& M; p* Y$ I @step_name = N'ExecuteStoredProcedure', -- 步骤名称
0 O4 L$ X* d) g% V$ ` @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)# f) q5 T0 z2 H) l' e0 d7 m
@database_name = N'account', -- 指定数据库名称
3 O/ T1 `4 W# O( ^# y @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)+ Z* E# B0 \, k% G2 P0 f
@retry_attempts = 5, -- 重试次数
+ l1 j! {) Y7 M3 o$ s& L @retry_interval = 5; -- 重试间隔(分钟)9 j1 Q& h; t/ |5 {2 j/ i6 g; L+ c
GO2 b3 K, |) z, w/ U
0 D9 |% v7 }0 U l) O9 G P
-- 为作业添加一个每分钟执行一次的调度" f0 V: g$ ^; I1 C6 @
EXEC sp_add_schedule # t, U% m! a) N% t- c9 |+ B
@schedule_name = N'MinuteSchedule', -- 调度名称. d: V+ l5 w1 }- j2 H3 d; ^* @5 M
@freq_type = 4, -- 频率类型(4表示每日)! j! p; x0 t* h* W4 ~
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
+ H' z \8 f7 M9 K, L! i @freq_subday_type = 4, -- 子日频率类型(4表示分钟): i& C: v7 }9 w7 b) T
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)) s% n5 i+ W4 O+ B% ~
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
/ _* l/ h! \, \) I, K8 n9 m, }, T) L @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
* m" x" q. I* }$ T, N, S- I @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)2 |0 n/ c3 R" `4 _ n. q. F" {+ r
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)/ D/ e: I. _# h; k1 m
GO! Z4 a0 y" U8 Q \# Z+ i! E
+ Y. X5 n$ u W' P& u
-- 将作业与调度关联起来
; c; e+ i. e0 e7 G* S8 sEXEC sp_attach_schedule 2 J8 e. n, x2 u0 i! c" K8 g& k- {! h
@job_name = N'IncreaseUserCashJob', -- 作业名称+ R5 A1 F# v0 I
@schedule_name = N'MinuteSchedule'; -- 调度名称
- I- Y9 n8 O, j0 a$ Y: P! SGO
* D% i. _6 s$ V6 \+ y0 l+ y3 O; o! L2 E1 \
-- 提交作业创建到SQL Server Agent
% ~7 b, W0 P& S- |) t8 EEXEC sp_add_jobserver 1 b( R, ]' ]4 C; B- z9 k! s0 h
@job_name = N'IncreaseUserCashJob', -- 作业名称
( J9 l9 g; D' C+ m4 L5 Q @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
9 P' ?$ ]4 ?, `3 ]- t# [GO
- j8 Z T+ A9 ~- L* o% {
" i$ k- R/ L I' F. ^! O3 e, W/ l; y, o& J4 q, _, S8 }' S9 Q/ K
$ j4 d8 S+ U6 F7 u5 ~1 @6 ~' @0 k( M0 e$ {: r; Q# ]3 B
O$ z% r& y* s
|
|