高级会员
- 积分
- 825
- 金钱
- 690
- 贡献
- 58
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------4 u B1 B1 f3 J9 ^7 L
USE msdb;( J/ z: x/ y' L9 L- l2 L' t' l
GO
3 _$ ~$ C! I- S
3 p9 Y0 p0 J' N. h-- 如果作业已存在,则先删除它5 C, l( a- m9 G) u7 {# ?
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
8 X+ w5 ?9 C9 s" C6 r EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';7 F$ Q2 s% s8 w+ G
GO$ \+ V6 U/ }0 I7 V7 ?5 E
3 `: P; J" X S \
-- 创建新的作业3 W% a) I$ K3 E7 b* {0 w) h% m g
EXEC sp_add_job
8 ^% a" l: [. T4 t @job_name = N'IncreaseUserCashJob', -- 作业名称( E& l/ D* J' }$ O+ z' I
@enabled = 1, -- 启用作业
I3 d( O! A; l0 B$ {- ^+ P7 { @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改9 k" l7 A1 a, J' C
@notify_level_email = 0, -- 不发送电子邮件通知
$ m. V9 z% k* t. {( n @notify_level_netsend = 0, -- 不发送网络消息通知
/ r3 M/ D, h, x @notify_level_page = 0, -- 不发送寻呼通知
& x1 P* p1 W* u9 ]# k @delete_level = 0, -- 不自动删除作业
. s, y, m- F0 S4 x5 B: r1 y @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述+ p' y% R" V# }+ V8 m
@category_name = N'[Uncategorized (Local)]', -- 作业类别
( R( \/ f2 C& Y+ S. t3 t7 {( j @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)* p2 H& b" ~1 B! ~; Y9 `4 O7 l
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
1 ]0 k" m1 E) k- P% P/ NGO
" d, L% ?9 N- [1 W! L3 }# @
8 a+ R" |0 B% [-- 为作业添加一个步骤' g# r; c- I4 J- Q. y; s$ {+ a
EXEC sp_add_jobstep 7 l6 k- D' g5 I T
@job_name = N'IncreaseUserCashJob', -- 作业名称
( S2 G- D. I) B* z8 f @step_name = N'ExecuteStoredProcedure', -- 步骤名称* x" D. [0 ~5 J1 X5 n+ e
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL); V5 F( v+ J9 X$ b' e6 z/ T
@database_name = N'account', -- 指定数据库名称# k- I' B, t4 r3 k; u/ M3 h
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
& J" ?) f* z# ^ d @retry_attempts = 5, -- 重试次数, G& }$ [" v- ]" s, }
@retry_interval = 5; -- 重试间隔(分钟) k" p. ^2 _: V$ N7 j- x
GO
+ F6 [- @ V, M. I1 H2 J) t
* U: A* s7 `" I-- 为作业添加一个每分钟执行一次的调度
/ Z$ Y& m6 c% L* S* _EXEC sp_add_schedule 3 ^/ q+ W) E/ K4 R+ b+ P
@schedule_name = N'MinuteSchedule', -- 调度名称
( i& v+ b/ Q( U @freq_type = 4, -- 频率类型(4表示每日)9 g! [- D, y* s& j$ b0 w7 Z
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
) i- Q" @0 j& Z, r2 M @freq_subday_type = 4, -- 子日频率类型(4表示分钟)* n9 x+ N7 P. } D+ I# m" Z( {
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
& M( l. O' s+ T" c @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)7 t5 m# n4 J K4 W# T* E4 ~9 Q' g
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜): ^, ^! K0 g7 H# o v
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)1 |5 W; i' I$ S J8 S
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
, u1 f6 E% s6 S( yGO5 i+ V. h0 U8 c/ ~' a( a5 ]
" E7 q* b. y+ ]2 ^1 t- x2 ?% B. r& V-- 将作业与调度关联起来
) K4 z8 L4 H8 G: S, _EXEC sp_attach_schedule & U7 q/ \+ g! k8 Q* ^
@job_name = N'IncreaseUserCashJob', -- 作业名称* V4 a3 y7 S8 {# W3 N0 Z+ f
@schedule_name = N'MinuteSchedule'; -- 调度名称2 J4 u r( J0 D. w! ]+ Y# E: e
GO
, T; |7 d$ M: H8 l$ \% d: O/ e8 v, X9 X' u9 u
-- 提交作业创建到SQL Server Agent
) _& g2 r+ x! F k9 @5 d( |, iEXEC sp_add_jobserver
, K+ a" U* r( C1 M+ {& W @job_name = N'IncreaseUserCashJob', -- 作业名称( R8 s& B+ x( m1 h* Y" V7 N
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
+ ]6 R) ?+ s7 V4 F7 NGO
7 b& X, d9 w8 M* j% e9 A
* X4 ~- I* M% L7 j' N$ U
) Q% _9 ~+ ~1 Y7 ~/ g( }" g: U) k( E; K! G
6 [- u. |2 v; S" Y4 a# {8 q. I
+ U4 d0 [2 F2 n4 E |
|