高级会员
- 积分
- 891
- 金钱
- 742
- 贡献
- 72
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------6 g5 R! k; i' m2 j1 }# ^
USE msdb;/ B" K( W9 x# r) \1 ?
GO9 K4 S7 D. T1 m: i, o+ x( m
+ x( f2 v: x& P-- 如果作业已存在,则先删除它" K2 f) ?- }) M Z6 }( \( b; ^
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
& J5 E" B6 w) r& Y; K! M! k EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
2 |5 i1 u% n4 @2 J. lGO
0 ^7 G8 f3 Z, R/ \$ G5 L4 f5 U' T0 B$ h$ L( W
-- 创建新的作业8 v0 c2 s" H/ L) A
EXEC sp_add_job & P# v3 j& I; {3 m8 w5 d
@job_name = N'IncreaseUserCashJob', -- 作业名称* V; \$ b7 U/ g. u; d+ k, z- `* N
@enabled = 1, -- 启用作业
o' n$ V! o& B+ C2 O( A& \/ r1 J @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
, n( y) k0 Q. s! [2 _. T0 m @notify_level_email = 0, -- 不发送电子邮件通知
- O% q. R# _1 W z4 }" |, } @notify_level_netsend = 0, -- 不发送网络消息通知
/ ~4 M1 q& c( v; ^6 o @notify_level_page = 0, -- 不发送寻呼通知
& x! y* `% {! z) U% V% o3 r0 C0 ]* W5 ~ @delete_level = 0, -- 不自动删除作业- w! e5 g8 r5 I9 z0 b# l
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述% h' o6 s8 }, g$ r8 V. v3 b5 Z
@category_name = N'[Uncategorized (Local)]', -- 作业类别
7 j' s3 j; F3 I% f4 `2 ]- a0 U @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
1 @' E2 \! k6 E3 j2 |* |) T- a! b6 ^ @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
* {( {& U( Q: ]& T- f$ D' dGO. S8 Y& x* b; s- Q
) J. v: W; ^! E) V-- 为作业添加一个步骤
D. I4 Q0 t) XEXEC sp_add_jobstep
3 j! W' a* N8 c* v$ w/ ]2 E% r @job_name = N'IncreaseUserCashJob', -- 作业名称: g2 U% k, p$ ^
@step_name = N'ExecuteStoredProcedure', -- 步骤名称: l6 e) }1 _0 q1 a* ]( C5 D# N' o
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
) W4 B* X8 P! Y/ K @database_name = N'account', -- 指定数据库名称
0 H7 a5 R) n. ?, A, |4 w) `( R; ]+ a @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
/ ~( n- `" M" f: c0 s$ D: l1 @9 h @retry_attempts = 5, -- 重试次数
: E! j* c) F' R0 G @retry_interval = 5; -- 重试间隔(分钟)
2 t9 @; ^, a0 n# v/ }; F2 f, kGO: s" g) l9 C! w; H9 Y; @
0 }" A! W4 N$ n
-- 为作业添加一个每分钟执行一次的调度
! x: r% \; P; C0 L" |- ~2 {- XEXEC sp_add_schedule / D4 d6 g4 ?1 v- Z2 d( `+ ~
@schedule_name = N'MinuteSchedule', -- 调度名称6 K! s4 ]9 Z6 K M: p2 k
@freq_type = 4, -- 频率类型(4表示每日)
# y5 x& B9 q+ [, `6 S @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
7 G" M9 F; p- M @freq_subday_type = 4, -- 子日频率类型(4表示分钟)8 T* ^; c2 y( r6 H9 R( ?: K5 Z
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
4 \! B& D4 }* @ @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)2 H! j2 c, }' i/ I
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)& ^3 {3 \3 L% a3 j# Q
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
. p$ N0 `( }8 j$ A* x @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)% t8 e3 W- ?; I0 P) i3 W6 |- L. l
GO
- K% P+ d# J! \$ Y+ t1 `$ H. N8 \$ q- k R. b, v" O3 y6 C
-- 将作业与调度关联起来
/ f5 y* f2 H7 `EXEC sp_attach_schedule
' m: E; E3 @* W. g @job_name = N'IncreaseUserCashJob', -- 作业名称
9 u0 G6 i( Q/ p, i+ B" d& F @schedule_name = N'MinuteSchedule'; -- 调度名称
/ f6 F1 w( h. ZGO
) o, s' R: c: k" g
; u& F% n# v" R1 M+ c-- 提交作业创建到SQL Server Agent6 M1 N4 g/ c y3 j
EXEC sp_add_jobserver % W. D' N: Z5 @7 g
@job_name = N'IncreaseUserCashJob', -- 作业名称
4 e6 N- X1 n8 B# s H5 G0 z @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
; l; a4 |' K) r5 F7 NGO
' L( U" s2 L: z; i/ \* R! r# y
' X: p9 J: w7 ]: F7 e
8 R$ |- f" f0 j8 e# t& ]8 Q0 `$ U
+ Q7 Y, Y) `- g/ z6 d* L- m |
|