高级会员
- 积分
- 786
- 金钱
- 654
- 贡献
- 55
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
' Q. ^ g1 X) q: j! K4 f6 |USE msdb;
) C! f3 W! Z4 e: iGO. f* [. f5 }% W4 e4 g' B/ Q' G
" \1 p5 Y$ l8 u+ ]0 M-- 如果作业已存在,则先删除它& Q" D a- e. O* i
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
' k, u; K" H( J9 a( K EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
: j. E( a$ ^# V0 h7 F) K' o$ P# YGO
5 F! a0 R8 B3 a7 D8 E* F9 F
! K3 w& J% z$ Y: W# P-- 创建新的作业. O! H0 a3 {7 H% O
EXEC sp_add_job
' S, n3 {& V+ t7 o+ b @job_name = N'IncreaseUserCashJob', -- 作业名称2 \0 ^( \' t9 ^0 I
@enabled = 1, -- 启用作业) V& T" d- [5 f& h
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
3 p. c1 \) F, F# T @notify_level_email = 0, -- 不发送电子邮件通知6 |8 Y2 ^5 p8 V) M+ y6 ^8 E
@notify_level_netsend = 0, -- 不发送网络消息通知
5 g+ `' m% D7 ]5 Z- V2 W, x6 Z @notify_level_page = 0, -- 不发送寻呼通知: _0 L8 n' N( `4 i. I9 R
@delete_level = 0, -- 不自动删除作业% v$ ]# N4 k4 s
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述 e1 J& R% S7 R5 Z- f
@category_name = N'[Uncategorized (Local)]', -- 作业类别# Y: F2 [7 [# \* a2 k, F
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)- \" [) I5 T' F* o2 q Z# o; q
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员) t+ }! A- g" ~3 J ?$ I# b2 g4 e
GO
8 X+ l z: S! m; S6 k; @( ?8 c9 W. d0 C! B. [
-- 为作业添加一个步骤
/ I- G" @& ^+ e- I* C( X1 G JEXEC sp_add_jobstep
6 v$ ^0 g0 H# ~$ h | @job_name = N'IncreaseUserCashJob', -- 作业名称
M& O) A; Z. H @step_name = N'ExecuteStoredProcedure', -- 步骤名称
" f$ M2 b3 a& P. x4 V @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)5 a4 f% Z W" R0 g9 M; r+ I* m2 `
@database_name = N'account', -- 指定数据库名称
0 ^! U3 Y. U# c9 E# l% n5 P' g @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)- l8 R/ a [0 E" j k* h- v2 b8 k0 D
@retry_attempts = 5, -- 重试次数
& n H7 h' O0 W6 I* z0 y @retry_interval = 5; -- 重试间隔(分钟)* p0 e; T+ U* e
GO
5 k" M$ p% ]+ {4 h) r$ c( C
7 }, e# K: Y' t8 R" S. @6 @+ w-- 为作业添加一个每分钟执行一次的调度* E. ? N) V8 V% i x3 F( [% T! d+ J
EXEC sp_add_schedule
) Z0 U7 v! G' [. {: W! |, T @schedule_name = N'MinuteSchedule', -- 调度名称0 W9 o7 W, G+ y0 {6 @+ u
@freq_type = 4, -- 频率类型(4表示每日): L0 z0 ~2 u3 n+ N1 T, e+ U
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行6 r5 b2 F' i, b% b" m
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
: A( N/ g% h: Y% O: v% n/ _ @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)% Z- v0 C/ ^0 b( |) s1 w4 g' V! p
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
6 |0 X) {1 m3 J+ A @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)1 Y+ ^3 Q. S4 t: }) C
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
( q/ C- R8 f. ?: z2 R5 O @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
/ r7 P9 z6 Y6 ^+ b$ v! Q. tGO
0 W7 x8 `) G0 F
! R, G# Y* k8 `4 r-- 将作业与调度关联起来
- Q4 I9 p* [/ x3 F/ J0 kEXEC sp_attach_schedule
( M- r- T8 U- f) O7 x; P+ I @job_name = N'IncreaseUserCashJob', -- 作业名称4 T; I7 p& \. _2 L
@schedule_name = N'MinuteSchedule'; -- 调度名称
8 X5 C" P9 e: y' ^, j5 L" BGO! {# z7 Y$ q! o
; g) J, F$ t4 A6 Z3 }+ `) R
-- 提交作业创建到SQL Server Agent
4 s Z* M9 P' Q% ?EXEC sp_add_jobserver 6 P' ?/ Y" S# Z; k
@job_name = N'IncreaseUserCashJob', -- 作业名称+ @7 y7 p" b+ h7 Q3 ]1 P7 ~' R. W" J
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
3 U" X E4 _7 l% o! e. Z- x( YGO9 I6 z/ d4 X: P) @
# [8 \1 N' i# ?& y6 R; W+ B n: U: X
8 s: Y" b5 [) |4 y& R' X n% F) D* d, `0 {) @0 j% n. ^3 M
G; w2 S: w- ~7 a! w" h; L4 Q
1 e6 a4 n5 p3 o5 K0 u$ n |
|