高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
) D% R- G" [$ d0 PUSE msdb;
7 R( J. P2 M" Y5 j: L8 }4 q2 lGO
5 V( @) b1 ~/ q" Y4 ~7 H6 z0 k1 a7 q9 Q9 H
-- 如果作业已存在,则先删除它
( c$ c' u. R- RIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')1 [# n5 w& V5 V
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
4 b7 [9 u" s0 y6 b: d HGO
$ D6 a5 g4 M' g8 v k9 D
) ^& ^/ ]9 r) v; k4 @6 z& O) [-- 创建新的作业7 A" c8 _* b8 Q5 \3 e1 ~ R4 l
EXEC sp_add_job
# o: R, p/ l8 w% B: Y0 W+ Q @job_name = N'IncreaseUserCashJob', -- 作业名称
: Q: i" l; X! o @enabled = 1, -- 启用作业4 p T, O9 g$ t X# T5 U3 ^7 w# E
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
[, x, h( ^4 A7 U @notify_level_email = 0, -- 不发送电子邮件通知8 U/ A' D" ?# Q& G
@notify_level_netsend = 0, -- 不发送网络消息通知
4 Z: J( c0 T6 W! z q2 [7 _ @notify_level_page = 0, -- 不发送寻呼通知
L0 P0 Q( K( F3 K& N @delete_level = 0, -- 不自动删除作业
( J) g5 c. D* C* ?' s `' C Q) A @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
) J# ^5 B2 K. u1 T- L9 P6 x @category_name = N'[Uncategorized (Local)]', -- 作业类别. O! I* G' Y0 @* l
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)+ p/ I: a" C! M0 d9 b% B" t. J; \
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员4 o2 B; a5 g D. o" @, U
GO8 k$ G+ X1 M5 }! U
$ r/ \" [$ s2 x# E Y$ W6 P' l5 x-- 为作业添加一个步骤
% o% C: K1 d# S% E6 q0 `EXEC sp_add_jobstep / Y- L/ T0 c* Q$ C$ X' u+ t
@job_name = N'IncreaseUserCashJob', -- 作业名称
* N+ y6 E" I$ }6 f @step_name = N'ExecuteStoredProcedure', -- 步骤名称
) l" L# G" w* @2 e0 d% G @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)( c4 ~6 y& b4 w+ M% \5 m
@database_name = N'account', -- 指定数据库名称* b# q; p0 o/ C% ` i6 z0 o s7 p- t
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
+ G1 V& ^/ X4 s. E% D* O% } @retry_attempts = 5, -- 重试次数9 _% g3 O- X M6 e, O% ^& h
@retry_interval = 5; -- 重试间隔(分钟)5 Z8 f7 `# j/ b, I; U) Y% r3 W
GO+ p: l4 k' `8 f+ H* ?0 c: ]0 s, \' H
0 b- L: L0 n$ j4 W) C( r m-- 为作业添加一个每分钟执行一次的调度
/ U; T/ h+ j8 [5 D% p- `0 J, yEXEC sp_add_schedule ; E: A/ O9 C0 v8 P
@schedule_name = N'MinuteSchedule', -- 调度名称- J" Q& ^9 Z" v" Q% F j: w: H' V
@freq_type = 4, -- 频率类型(4表示每日)) S4 ^8 h/ y$ P$ t1 i5 K p. Y
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行, z# `( @$ R, N& J* e* @- q8 A
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
: M* F0 Y& c1 F z4 c @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)' q2 u! p) e) x2 g, n' N8 _
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
" Q1 n. ]' n- r3 r @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)* ?8 d6 y7 c9 z5 [8 `8 [
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
1 p8 R* d1 V, k- G" L! m) B @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
" c! V% y% I3 E" jGO) m% Q/ R# Y4 `9 {1 t/ k' _
" K% I8 e* F* f' |0 X-- 将作业与调度关联起来; m0 ~2 A; W( K+ I# g) M# w5 p
EXEC sp_attach_schedule
9 c$ a: C, d# `! |+ T( o0 @ @job_name = N'IncreaseUserCashJob', -- 作业名称" q6 @, R" d7 m& |7 r1 I
@schedule_name = N'MinuteSchedule'; -- 调度名称
n$ s! H9 e1 w1 S% |; C$ s i* DGO( {$ D4 H, d( w1 J5 Q
: m! L3 h0 G7 ^, k8 |% z/ V
-- 提交作业创建到SQL Server Agent; t3 g T$ p7 H$ S1 w! \1 e
EXEC sp_add_jobserver ) T% o; a. v! @
@job_name = N'IncreaseUserCashJob', -- 作业名称
' q; `! X4 }1 c, N2 J O& K @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')' _: P1 W6 ?4 i3 S' I
GO6 l/ e5 B) `2 P2 r7 ?+ I
& R/ A) o+ J$ Y- J" N) E0 Y& ^! C8 y2 i9 V+ I
: e) A/ q7 L, L- c2 T
3 @* v% {/ o. v' Z
u/ I" T3 E( y% s! Y0 G
|
|