高级会员
- 积分
- 825
- 金钱
- 690
- 贡献
- 58
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
% m' K+ u7 d+ eUSE msdb;+ x7 D0 ?- ]4 {5 Z$ _9 c0 J
GO7 _ w( r" b4 ]
/ Z4 M8 k- M7 C9 f( [$ O& h3 {$ }; Q
-- 如果作业已存在,则先删除它
( z- `% F: b/ V6 G2 S4 m7 O2 {IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
+ o4 E7 i5 k y. i: x1 a: i EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
- N6 S5 w6 X; TGO
" D6 }- _, B. a$ ~. p8 a, R
( b, {/ \- ?& m1 P, n-- 创建新的作业
% b# e9 ~$ v+ G! L( n7 G9 CEXEC sp_add_job
( l8 j) o N/ ~$ I9 p @job_name = N'IncreaseUserCashJob', -- 作业名称, }' j% O2 H- J
@enabled = 1, -- 启用作业4 J( N( ?& G, A: a" H. u: c
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改- B4 X2 y* V* ]( f- X; Y
@notify_level_email = 0, -- 不发送电子邮件通知
6 n" \3 ]9 _4 a: n8 D @notify_level_netsend = 0, -- 不发送网络消息通知7 l! q* Z4 ^5 e1 v
@notify_level_page = 0, -- 不发送寻呼通知
5 j! G7 l3 I& e/ W# R @delete_level = 0, -- 不自动删除作业
: }' E4 |2 A( W6 T9 {% T: ~* r @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
' e% o. a0 @: v- B: ?( z$ A @category_name = N'[Uncategorized (Local)]', -- 作业类别* x4 ^5 F4 ~8 H1 o1 X
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
5 t' Y' @/ Z1 x/ j4 z E @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
3 d O9 I8 u+ J6 k8 y0 q, AGO: u* Y/ s H' a1 w1 f
/ S0 ]$ M2 s" v2 V4 h% h2 \-- 为作业添加一个步骤( G' x7 B7 x! j& V* q- T. {2 W
EXEC sp_add_jobstep - u( i: A* D3 F5 _6 S
@job_name = N'IncreaseUserCashJob', -- 作业名称
" S, D" B" ?! ]2 _: n @step_name = N'ExecuteStoredProcedure', -- 步骤名称8 e; M* u/ l( }' E
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)9 C, }2 H# l' q( g/ s+ T4 s1 M
@database_name = N'account', -- 指定数据库名称
/ v2 z# U: p* h2 U, m8 }3 }2 T @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
# E/ \) C! X" S) k3 ?+ l$ ^ @retry_attempts = 5, -- 重试次数
' h3 q! L; M8 R, F0 r @retry_interval = 5; -- 重试间隔(分钟)
8 {$ E4 z9 B$ F- G: ?1 QGO5 N# C7 K5 X, @4 c7 w* Y
$ x# I- i% P5 {, C9 O& |0 q-- 为作业添加一个每分钟执行一次的调度. N. l/ R7 ~* N2 ]
EXEC sp_add_schedule ! m8 r, z. [' |0 S8 X% p* {
@schedule_name = N'MinuteSchedule', -- 调度名称/ Q0 U0 @" x' y& L; m5 k( Y: Z& x
@freq_type = 4, -- 频率类型(4表示每日)
$ E/ G' t! s8 S* \ @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行( X+ t* P* ?! }
@freq_subday_type = 4, -- 子日频率类型(4表示分钟), L& K" ^/ V2 r+ O
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)9 R2 m4 V( [& B' L. F/ I
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)5 W! g6 q0 T9 D! ]/ u
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜). E7 J: H+ O# B6 c+ t& K+ Y
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)2 R( V$ ~& ]! I* [' I: Y H' _
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
8 q1 j# Y# g) d4 a* U0 E* m; }GO. W5 y0 x- E1 v V+ Z& S+ [( g
; ?" w% f0 j' b7 ]
-- 将作业与调度关联起来
1 x* z% _8 m% M t$ ~EXEC sp_attach_schedule
2 B( T5 R B6 x1 h% F- l7 D! k @job_name = N'IncreaseUserCashJob', -- 作业名称
7 K# O7 A2 _5 R- k @schedule_name = N'MinuteSchedule'; -- 调度名称
) H% R1 E, m4 t/ C- \# m( tGO
2 s5 ]2 _7 H4 |9 i0 N2 Z6 R
+ X: n4 m% X, J0 d Z3 z-- 提交作业创建到SQL Server Agent
3 }4 [; u. P4 t3 L; N" P+ gEXEC sp_add_jobserver
3 v2 Y9 H9 E, j! {0 L# P7 ` @job_name = N'IncreaseUserCashJob', -- 作业名称
. v; C' w5 z, S) C; C5 @ @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')% p4 p0 V4 o) f; U: [# H
GO/ K# W+ ?/ m' q; h
' I/ V4 K7 S+ M& _9 J
- Z2 R# f5 u. a! D
5 T9 P: |. q6 P- [2 @% k$ Z- A
" F' ]1 E. b6 Y1 Q3 s+ e0 K: n- Z" I/ S1 z
|
|