高级会员
- 积分
- 729
- 金钱
- 600
- 贡献
- 54
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------) M" }1 D0 z. X0 g1 c
USE msdb;7 x. T. Q$ j" }! d
GO
' R) q2 g& Q, F) x; l4 q; `5 `1 A5 H' Z8 s
-- 如果作业已存在,则先删除它
, {/ q/ i4 v( u; L2 wIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
+ p0 O6 |0 ?4 ?, k( I R8 I EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
0 {2 g9 z5 ~: }& P3 F5 fGO! r `7 \% ]- c: I6 O/ Z( D" B
7 z0 P9 Z& W8 Y( l/ O1 O
-- 创建新的作业
p+ t1 E. @; S/ K, ~5 eEXEC sp_add_job
8 O% \; @% k7 {) A) L6 t& ~/ r @job_name = N'IncreaseUserCashJob', -- 作业名称: b: ~' r; y2 c/ Y2 i
@enabled = 1, -- 启用作业
8 }: F1 @" ^$ b/ p3 X% K3 B @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
, I; Z* }7 \2 o. _6 T) E' V+ @ y @notify_level_email = 0, -- 不发送电子邮件通知
/ I; b9 \3 @. F7 B8 n4 [ @notify_level_netsend = 0, -- 不发送网络消息通知) T1 z$ u0 z1 h, B* t
@notify_level_page = 0, -- 不发送寻呼通知
2 h5 @8 T0 U- b5 e' X8 X7 r @delete_level = 0, -- 不自动删除作业
) b* }% {6 d' Y/ a @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
7 K/ a; L& [5 u7 X/ N. t0 M @category_name = N'[Uncategorized (Local)]', -- 作业类别5 H8 L) y9 H6 b' K* `1 R6 i. P6 G
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
* L8 o0 _9 i) J+ [* G- G+ h5 t) x @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员5 y d( w! g% Y3 D! S
GO
J8 d- ~6 z; D# |( q I* p- u. {9 ^* d6 P
-- 为作业添加一个步骤6 F. t! U5 p/ A9 o+ a- u
EXEC sp_add_jobstep
k: z! H' p7 z @job_name = N'IncreaseUserCashJob', -- 作业名称
/ K- y0 o! l8 u1 y) U( ` L @step_name = N'ExecuteStoredProcedure', -- 步骤名称# \! N/ g9 {) t5 l* S+ T
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
& a: G @# |# D# ~. n @database_name = N'account', -- 指定数据库名称
$ [0 n% h, T$ ] @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
+ E, t N6 A1 X- P+ i! C t @retry_attempts = 5, -- 重试次数) P0 A8 D1 v; Z; W7 F3 L# z
@retry_interval = 5; -- 重试间隔(分钟)
% T9 p5 X( o3 h1 F- W# t! iGO
3 S9 b$ K6 ]" M3 U0 T( W' {
! d. g: c# Y" J( C: {5 S-- 为作业添加一个每分钟执行一次的调度
) Q: r) h/ P3 `9 y6 y8 C UEXEC sp_add_schedule
" x6 @' b9 P7 r0 d% S. q @schedule_name = N'MinuteSchedule', -- 调度名称" j7 D- p( U9 E/ S' f4 W, ]) f$ o
@freq_type = 4, -- 频率类型(4表示每日)
4 m9 S: \4 f l1 t- Y5 d @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
# d0 A$ s0 A: f @freq_subday_type = 4, -- 子日频率类型(4表示分钟)* W8 o: E7 l6 x
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次): }' F3 j) ^# O: Y# h4 V
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
6 P0 ?: t' O$ G+ O @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)2 [7 W% e; {& p: W& a" J
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)* ^* P. V8 `! B
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
. N6 o4 ^/ {- ^/ y5 `& x! hGO+ ]; n6 B. ?! s+ X& b
$ j' k8 r1 G; P! }0 Q( G; H& z
-- 将作业与调度关联起来
m z v1 ^4 S9 vEXEC sp_attach_schedule
6 s& y/ K: q( I: p/ i" m+ a! Y @job_name = N'IncreaseUserCashJob', -- 作业名称; {- g" Y% Z' ~; F' a. i
@schedule_name = N'MinuteSchedule'; -- 调度名称9 ^. u7 S" }' d$ N" X8 ]7 [4 O& w
GO. H8 p/ c) g- P: k" E
, C6 c) N2 \% E# I-- 提交作业创建到SQL Server Agent, p( d8 E7 P- S) K
EXEC sp_add_jobserver * B! F4 B9 S" F" x
@job_name = N'IncreaseUserCashJob', -- 作业名称' |$ F2 J. N1 \: Z
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
2 R" i" `0 d* AGO: y/ O0 y4 o1 N& n9 b1 b+ `
! V; v* ]) S9 e9 f0 l' ~# H+ k0 A* H* @+ @2 E4 ~1 g
' K$ [+ h3 l9 P( n
/ l6 `& y* j) g7 h) {$ w. _6 x2 j! K+ S; a. {8 f+ q+ q+ {9 ~
|
|