中级会员
- 积分
- 303
- 金钱
- 207
- 贡献
- 22
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
. e r+ Q( p8 tUSE msdb;
1 s4 }% s9 l3 N% z. N) o y; RGO
' b1 `$ ^) i O$ V e% B
8 r: E7 @( T2 k4 L-- 如果作业已存在,则先删除它# K' N6 P h5 \) A
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')( j* ?$ I/ i7 Q1 b* K
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
9 r: i6 L3 X6 D3 G6 ]GO
& ?3 _) ?9 p9 U+ s( @
$ n6 \3 a8 b X3 z, \6 z7 F-- 创建新的作业
; x9 K2 z+ P _! r/ x. O0 z( vEXEC sp_add_job & L% ]9 u' _$ M# ^
@job_name = N'IncreaseUserCashJob', -- 作业名称
6 q7 X) F. [" c, }8 R, d @enabled = 1, -- 启用作业6 S" G) Q+ A2 W z6 {* k0 y
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
1 c+ T% w1 E: t. m" W8 j8 ^5 f @notify_level_email = 0, -- 不发送电子邮件通知
5 D2 U0 t+ J( p& W @notify_level_netsend = 0, -- 不发送网络消息通知
8 i: K! d* V! E8 K5 } @notify_level_page = 0, -- 不发送寻呼通知
) m+ L, K2 Q5 W9 j! }9 P1 B @delete_level = 0, -- 不自动删除作业6 H9 `( U, z4 S2 P* d* p; }% N
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
$ H( Z, E9 W: e8 z @category_name = N'[Uncategorized (Local)]', -- 作业类别( I- u; a( x" n2 y" q" f! N3 t _
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)% W1 W, g- L% x
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员2 J: ~2 t4 ?' W, T! u- T
GO
6 N; d! |6 K: n* J% {! A4 Y( n! Y8 `. ]5 ], L! p( N% {( _: `' }
-- 为作业添加一个步骤
3 n5 I$ z2 I/ }0 JEXEC sp_add_jobstep
; _% ?. u9 S. U @job_name = N'IncreaseUserCashJob', -- 作业名称
6 k* a3 z9 B$ b) f9 f: `5 f @step_name = N'ExecuteStoredProcedure', -- 步骤名称
& Z( s' y c: M+ F& I) c @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
, g, ~3 D) z" X5 f) I5 ` @database_name = N'account', -- 指定数据库名称
, W, r3 y5 D6 g% k! v @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
/ M% f: n! P( Y" R @retry_attempts = 5, -- 重试次数. }3 z$ z& v! N8 y8 Q6 j9 H, L
@retry_interval = 5; -- 重试间隔(分钟)2 G0 }, t/ V, m( O
GO
# ^" P8 m* R% M3 W; ?
8 j0 w2 d/ G2 G9 ~! }; E- t4 W9 M-- 为作业添加一个每分钟执行一次的调度5 B! G# c! o0 O* x
EXEC sp_add_schedule
9 x, n* }0 t( m, I9 r" a @schedule_name = N'MinuteSchedule', -- 调度名称# s& z( _, v- S
@freq_type = 4, -- 频率类型(4表示每日)
9 F2 P6 ]/ o/ C7 ^8 |% q9 s @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行7 Y4 I( C3 q) U! X
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)1 _3 Y& |% q- S9 S4 E. @) J
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)3 S( D; r3 K2 f. c2 h/ I/ P+ b
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)" |- p4 x- e0 \7 `( ^! E
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
0 e' S( G/ g) q5 b6 I2 ~) D/ u$ |; i @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
4 _0 g W, `+ g; R @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)/ k( L: K& E2 g8 `
GO
4 [( k! T; u- u# Q2 K. U/ J! y! [( O2 q. i Z
-- 将作业与调度关联起来
8 O+ h: C" w0 v- Y R8 a9 REXEC sp_attach_schedule
Q- w; v' W/ D, c @job_name = N'IncreaseUserCashJob', -- 作业名称
9 K; O8 G; V' b' |6 l& [; d1 {; _ @schedule_name = N'MinuteSchedule'; -- 调度名称
0 j# @5 ]' m( K% UGO
; A( l2 }8 P: M+ w7 p p! i2 Y3 w
-- 提交作业创建到SQL Server Agent
, M" V! P" V. [# B K0 cEXEC sp_add_jobserver h7 w" [( ?( F) j6 P' m
@job_name = N'IncreaseUserCashJob', -- 作业名称, n+ q: P7 r5 Z# g6 T5 Q. G
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
- S8 s' H/ N. q/ @1 `+ C; rGO/ K+ S" g, H( w, }# M( B( R
0 @. i3 S M% Q' c
S; h [) j. s* A% S, p& Q+ r) M$ k9 o% \: n- d6 P
5 e& V2 O- h4 ^* f9 F6 u
! {7 @/ t9 z1 j* T {
|
|