高级会员
- 积分
- 744
- 金钱
- 613
- 贡献
- 55
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------9 [3 i @2 h/ N9 m
USE msdb;" f7 ?8 T9 O8 W! a P
GO' C7 _' n. ^: N/ F4 O: v
( {6 {5 Y0 M' E7 K
-- 如果作业已存在,则先删除它
& c6 y8 A! U7 H! f6 YIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob') c6 M" |# R, x$ A) n
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
) L- w- R ]8 Q+ R O# Q$ N6 U" tGO
" t* v0 e" I2 [, _: Z7 p' z6 v6 [3 @1 I7 \% _( V; y
-- 创建新的作业+ c8 ]5 l$ {6 N$ t& A
EXEC sp_add_job
4 z- B+ Z$ x( |+ _* a9 U! l; S& j: y @job_name = N'IncreaseUserCashJob', -- 作业名称
% Q, R) g% `8 w @enabled = 1, -- 启用作业4 V& L8 N, ]7 E1 c8 A$ I# F) m
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
. x4 b, T: t b @notify_level_email = 0, -- 不发送电子邮件通知
4 \! t5 X0 p1 V: b @notify_level_netsend = 0, -- 不发送网络消息通知- H6 }; E0 V/ ?2 b, X/ t
@notify_level_page = 0, -- 不发送寻呼通知: y0 l) Z1 ~& d5 b- [/ Z6 a
@delete_level = 0, -- 不自动删除作业 i$ K, u `' ]+ k0 n
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述' c5 U, e1 W# O6 c2 c
@category_name = N'[Uncategorized (Local)]', -- 作业类别
8 V( m; M6 y! c/ }0 t @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
+ k/ |2 K5 d: K2 G: c# ~3 ? p @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员5 x4 U3 |7 {# Z
GO9 J# x/ ]1 H2 Y/ E; W
; Z$ ]5 |0 y9 c0 C, ]( U. f" H-- 为作业添加一个步骤
5 u: d! B3 Y. H2 i* vEXEC sp_add_jobstep
% u# Z; D9 W; u$ n @job_name = N'IncreaseUserCashJob', -- 作业名称
2 U5 O% ?8 n( V) l! _ @step_name = N'ExecuteStoredProcedure', -- 步骤名称
7 d' z8 o$ ?! O( \5 k3 ^7 ^: X8 K @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
+ F* p/ \. I2 r1 d/ n, R/ _ @database_name = N'account', -- 指定数据库名称! _9 p$ B/ J5 ^. q% |; @
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
* v$ t r5 i7 r* h& H @retry_attempts = 5, -- 重试次数
3 L+ e" e( y& r" \ @retry_interval = 5; -- 重试间隔(分钟)5 \$ S/ p1 `' Y$ m% B
GO; E) {5 k% L. x2 Z4 }2 R9 G
2 {. g" W) G/ C3 Y! g
-- 为作业添加一个每分钟执行一次的调度1 ^' z1 i0 w5 g
EXEC sp_add_schedule 1 ?7 h, D7 n! J
@schedule_name = N'MinuteSchedule', -- 调度名称
0 T O, [& E0 G @freq_type = 4, -- 频率类型(4表示每日)0 |, G. v0 P7 l4 q& z: t( t
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
) j0 n+ ]( G5 a0 f7 Z: [0 ~# N+ ] @freq_subday_type = 4, -- 子日频率类型(4表示分钟)( d. M/ U( R6 ?6 ]
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)- t% R, i3 v1 t% T/ h8 v0 h7 V
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD). k' {0 z2 t0 \4 R' {
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)+ [; e" \0 X. }8 K# @
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
. g. f7 ?4 L2 z, m1 F7 i9 C# W @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
; K. V) b; h0 ?- g3 b4 mGO K& }2 j% B: U0 B+ y
% |5 N0 k: r9 [4 ^
-- 将作业与调度关联起来3 R" ?7 N7 D) |) ]1 O
EXEC sp_attach_schedule
5 u& C# @, S+ _; v: P @job_name = N'IncreaseUserCashJob', -- 作业名称
/ |* p* ~7 I D) m {" b @schedule_name = N'MinuteSchedule'; -- 调度名称
1 B6 v6 x5 E1 P- L# R' {8 FGO/ }4 b2 I: X! p( [
, n5 |9 s5 F# A" D5 a2 ^
-- 提交作业创建到SQL Server Agent
( i- Y) ?/ x' h0 @8 k4 x: ]EXEC sp_add_jobserver . H1 x) o7 B. J
@job_name = N'IncreaseUserCashJob', -- 作业名称 z; Y# y. v' Q: _
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')+ D, ]' M' M$ w) g6 a2 s
GO
8 h; j) v( h* F' \- j" Q# J- m
- O3 n" l! Y% l5 Y- q# Z9 Q4 \2 T3 W& j1 c) y: \+ r! Y; {) |
/ n t6 }9 P z2 o/ U6 x! j, A
' [; y7 F# ~: q5 o0 ?+ Z; ` |
|