高级会员
- 积分
- 867
- 金钱
- 728
- 贡献
- 62
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
/ H$ f0 \! z* }" vUSE msdb;
$ \) v: H4 E. l# C9 YGO$ h" O: C" i' [, f( F
$ j+ G4 |# X- x" I& r" ]5 h-- 如果作业已存在,则先删除它5 x5 B9 x5 j* l; u }
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
' H! Z0 j, Y2 ]. t( x7 U. k" U( \ EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';1 i0 E0 T6 ?9 Z* o5 T' L
GO
4 W* l3 i) n% j d( [+ Y3 }$ L
* O% ~4 ]: A/ ]$ ?1 G# w7 ?-- 创建新的作业* {' u4 ^4 a% m( |+ k+ x
EXEC sp_add_job
: g2 A" b ?# ]9 n8 P* B5 o) H/ ^ @job_name = N'IncreaseUserCashJob', -- 作业名称; ^) ~: R% y+ z
@enabled = 1, -- 启用作业( _+ E- H' f& I$ q
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改9 d( `$ c$ l7 H
@notify_level_email = 0, -- 不发送电子邮件通知! V {( }5 `& L/ t e8 w6 V! w
@notify_level_netsend = 0, -- 不发送网络消息通知
+ @- _; C, j- v% W5 ]/ Z m0 } @notify_level_page = 0, -- 不发送寻呼通知9 }9 }( _' j$ h% a) M+ x# ^+ Q
@delete_level = 0, -- 不自动删除作业
- l4 N$ U) x; z$ O4 p, J: y @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
6 b& X8 F: {8 e7 y5 D% H6 I @category_name = N'[Uncategorized (Local)]', -- 作业类别
* `* K7 j2 ?% P( G! r1 P' F0 L @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名) I l7 T8 x" z8 \; V1 u: ~
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
5 I J$ q Z0 A* j1 i7 @" AGO
1 o$ ~! Y/ ~$ a+ x7 [ D7 @7 {
5 L9 i$ ?5 b" R& v1 d1 @- H7 h-- 为作业添加一个步骤
9 S$ |% V0 \7 S# A! ~$ t! HEXEC sp_add_jobstep
. \) y' j; Q1 W$ m: w: o @job_name = N'IncreaseUserCashJob', -- 作业名称
& J0 L- z( c& O4 D9 O @step_name = N'ExecuteStoredProcedure', -- 步骤名称
( f e. z# y1 W2 p8 g7 S @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
% p c0 {) W. k! e @database_name = N'account', -- 指定数据库名称
/ I5 t1 A: R* |9 y/ e @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)% U0 r; | ^8 `' @+ a M
@retry_attempts = 5, -- 重试次数
8 p$ t) e% x4 E4 q8 H) P ~ @retry_interval = 5; -- 重试间隔(分钟)
8 ]- l$ p6 Z( Y: Y8 bGO
" Z4 V, M8 U7 t/ a1 {+ f: a- V" K9 r1 r7 [; E$ `9 ~
-- 为作业添加一个每分钟执行一次的调度3 n1 e4 B6 H* g' v
EXEC sp_add_schedule
0 g+ I! o- \7 C+ Q3 i1 a @schedule_name = N'MinuteSchedule', -- 调度名称% S8 e$ {1 k! |/ u
@freq_type = 4, -- 频率类型(4表示每日)
4 I$ I4 L( G) \8 C1 i6 Z @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
* B1 I* c, x( Y X @freq_subday_type = 4, -- 子日频率类型(4表示分钟)$ k4 |# ]$ n7 ?
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
+ a5 y- Q' t6 s; i1 u; } @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD), I. X$ t, U; ?
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
% I9 ]! B3 N0 |, O7 T" P: R @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)8 ]) j. U- L: E& X
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
5 [* W; s+ o' p1 E6 NGO
6 m* v/ i# k7 K) A/ p; C! D! T, y8 U3 z- T% A" D6 b# u* f
-- 将作业与调度关联起来
9 L0 r$ S" m* O3 X# s# j3 |2 B6 wEXEC sp_attach_schedule 1 F! b' E* s9 I+ s+ c4 e& b
@job_name = N'IncreaseUserCashJob', -- 作业名称. S+ r5 N4 u- I
@schedule_name = N'MinuteSchedule'; -- 调度名称
; N% T4 Y1 q7 g: D+ A: I# JGO
" M1 s6 j) i- ^- N) |6 }. A3 n- I8 J- [/ k& p# `) ]" ~
-- 提交作业创建到SQL Server Agent
: Y3 E3 f3 H1 r& C; lEXEC sp_add_jobserver
1 @; w, Q" w5 ~: u( F6 W, D$ o9 b& r @job_name = N'IncreaseUserCashJob', -- 作业名称
5 Y5 m7 ]/ ~+ ? P2 r @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
) B7 O+ W$ b9 t6 F6 @1 WGO
6 E( B( Q/ d- u K; `: T# V4 ?* m" h2 L# k* f2 e$ _5 p" [' K2 A) m
& P+ S4 q" n7 M' ]8 j/ u* l) x$ A$ j* k1 S% o
; Y9 p" Z8 w2 d
6 E3 D3 B; W0 t: { |
|