高级会员
- 积分
- 870
- 金钱
- 730
- 贡献
- 63
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
! ]2 E& Q! V0 L# v7 Y- zUSE msdb;1 w2 T- ?5 Q* A8 h8 U/ @
GO
; t3 I3 B& i: y" P0 `6 U" T4 ^. r$ f3 b/ G
-- 如果作业已存在,则先删除它4 @* ~) y) `, i& {* `0 ^
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')/ K* H p+ C& |* s3 f
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob'; g1 m% _3 D, V" t
GO: l# ]& |8 E1 b( i9 R" C
& i( m; W/ y% G# B0 V-- 创建新的作业
( u1 N) F" k C% tEXEC sp_add_job * A# A1 ~& B& g7 F7 P/ d3 o* n0 H
@job_name = N'IncreaseUserCashJob', -- 作业名称2 b. C2 i) f# [. P! Y
@enabled = 1, -- 启用作业) _9 u+ Z% M. x3 t7 V+ Y
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改0 C: W) Q2 M4 R
@notify_level_email = 0, -- 不发送电子邮件通知
1 s# g* s' Z0 d0 j% S- i+ Y$ D @notify_level_netsend = 0, -- 不发送网络消息通知
7 u- h r) o/ q5 |+ X @notify_level_page = 0, -- 不发送寻呼通知
7 C3 W. P! \# S0 M6 C5 V4 G! o @delete_level = 0, -- 不自动删除作业4 |, \" Z! B) A* O3 d8 B
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
( i( A+ s% ]* L% y# @4 y0 @ @category_name = N'[Uncategorized (Local)]', -- 作业类别
' u& U, A/ i/ w7 O8 P: V& A @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
, D4 q/ t6 W) y: ?7 { @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员9 u: V8 z4 f7 r- v3 l* _
GO
4 [; P# {6 \ ^9 |" P' N, p6 Y9 y' Y# K& f" x
-- 为作业添加一个步骤: G5 } x6 [! {% s- O5 h
EXEC sp_add_jobstep
+ k# q# A$ \) O& D6 K! n1 Y @job_name = N'IncreaseUserCashJob', -- 作业名称, u/ @ Y k* `5 A5 H% Q
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
& Z+ ~( x" s2 k0 k @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)8 d7 x& K5 R9 h: c' p2 ]2 z8 I
@database_name = N'account', -- 指定数据库名称" E0 h& D9 H4 ?4 t0 I2 Y# N
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
* j6 k% ?* X6 Z$ M5 D! U @retry_attempts = 5, -- 重试次数
% F% x8 x; |+ F$ I8 a* t @retry_interval = 5; -- 重试间隔(分钟)/ L) b2 F/ {' q8 C7 e4 r% _1 S) S
GO+ `' K0 _+ }* f0 M5 N
) `, A; |# P" P4 {( r+ @
-- 为作业添加一个每分钟执行一次的调度4 Z% T R5 c1 H5 f: k
EXEC sp_add_schedule
0 S$ r7 P6 ^) t& \: N @schedule_name = N'MinuteSchedule', -- 调度名称
, [) s2 L Y3 d/ [1 J' k @freq_type = 4, -- 频率类型(4表示每日): W3 A5 ~7 n' ]$ R# V" _
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
" n9 q5 z& \( f! @3 E* W @freq_subday_type = 4, -- 子日频率类型(4表示分钟)! O! I4 ^6 r; `+ o3 `( [* F6 @0 E
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)- ~8 g7 J* v! \: k* f0 _
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)( \" m4 I) l' l' L* p
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)- P0 \" W5 ?' ?5 T( _, I
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
6 @" f$ H, H2 Y6 m1 J- g0 k4 y; | @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
% G1 l4 I3 W0 w" @' r- oGO+ d( P ~: c/ Z5 m" f) J# h
- N& n: Q$ p. ~5 _; v
-- 将作业与调度关联起来
7 a1 n$ h& I+ [( O+ a) `! [2 Y% C" zEXEC sp_attach_schedule ; q" @2 v8 [1 g5 o% H3 }
@job_name = N'IncreaseUserCashJob', -- 作业名称
+ z" |0 E. C, M* `/ I @schedule_name = N'MinuteSchedule'; -- 调度名称5 {9 l! P, A* b, F) D
GO+ F: [% z! {( ]
6 j3 X* ?# _. a6 U- A" y5 B& {) j-- 提交作业创建到SQL Server Agent+ ~; r* O. X' k5 j9 g* F
EXEC sp_add_jobserver % m4 z% W2 m( X# m# n
@job_name = N'IncreaseUserCashJob', -- 作业名称
( j/ V0 {! R! l- _- m @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')' L1 k l* H5 C- f- ~' K' R" k) ], V) Q$ w
GO
7 |2 ]" S2 t' b. `& Q3 ~! A4 v3 b% o% {! n7 q
, z* x* ^4 P7 H' {/ G- V2 P
1 z- ]4 U l6 N3 b$ O- c3 k
# S# S9 ?# p- \% k( o d3 |7 e7 H' d. O% b7 S4 u
|
|