中级会员
- 积分
- 303
- 金钱
- 207
- 贡献
- 22
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------# d9 v1 M B- b2 u, j4 C1 t
USE msdb;
@5 Z: E1 n5 G; ] B" O& [GO
3 V5 D. ]* P" O4 G
9 M* W$ a1 V- p1 K# E-- 如果作业已存在,则先删除它8 k2 W% H* z* I0 d, K' \; w+ d
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
# t% H# ^% h4 U7 j# D6 P EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
1 C [& ]( M! y7 U0 {# h6 J3 UGO; X. P$ t# J, M/ W4 h* ^3 K8 D
+ Y h3 y# G) E+ K3 h
-- 创建新的作业
( h# s, n/ @9 ]6 q4 s# K( L9 A) |* REXEC sp_add_job 0 l- r4 }5 b2 c. o
@job_name = N'IncreaseUserCashJob', -- 作业名称- B' Q+ ]" l3 j- W$ O6 y
@enabled = 1, -- 启用作业 w+ o U7 H5 J( n& T
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
i, X+ W% k1 a; Y$ U1 d @notify_level_email = 0, -- 不发送电子邮件通知0 |5 X# x/ V b5 h \ v
@notify_level_netsend = 0, -- 不发送网络消息通知
) R* J, a7 U; d1 l @notify_level_page = 0, -- 不发送寻呼通知% w+ ~1 p" V1 Q" y- E4 ?! S
@delete_level = 0, -- 不自动删除作业
6 ?# D, k; W: }" T @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
2 y1 p7 }% @9 Q+ p9 G0 W! L @category_name = N'[Uncategorized (Local)]', -- 作业类别( W; g5 a/ w; J+ q/ r$ D; k5 q, X' m
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
b& Z" ^- ^3 {* E5 N* Y @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
, J9 x% ~- V( x9 F, MGO
7 m! P) w) g& Q$ U1 ^6 j9 \/ V. h7 A m7 K& r" L( ]5 r! j$ n2 D
-- 为作业添加一个步骤
3 F6 |4 |8 |9 p/ p" N3 ~' L- Z& }- W0 ~EXEC sp_add_jobstep
0 o9 u/ M3 u$ ^4 M @job_name = N'IncreaseUserCashJob', -- 作业名称! b3 W: |- g, f$ D
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
. V8 `3 v4 R& r3 _ @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
# a* h$ |; l5 B a+ l% U+ ? @database_name = N'account', -- 指定数据库名称% R& \8 z8 r: G# W3 e. \9 c
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)1 t$ d( Y5 F0 ~3 s2 o5 G
@retry_attempts = 5, -- 重试次数3 F7 C- I: s& J1 l
@retry_interval = 5; -- 重试间隔(分钟)
4 }6 f( x& c! Q" vGO
Z2 U, N. R2 K2 I0 s% H' @( r9 Y3 Y' [4 C j1 p, c4 `: u# I
-- 为作业添加一个每分钟执行一次的调度
/ Q9 k+ d+ {7 r8 }& rEXEC sp_add_schedule ) x' J7 t: a% }' P+ V
@schedule_name = N'MinuteSchedule', -- 调度名称
]9 b8 [% O1 i* ] @freq_type = 4, -- 频率类型(4表示每日)- T8 v- c) ~! Y' H
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行" _2 R- `8 y! u' u3 j
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
! o/ i+ ]2 j5 F7 w0 S) E% s @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)+ r6 Y+ I1 F1 _/ A4 _
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD), I& D9 G' H4 P" Y; J7 ]
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)3 A/ Y7 ] S+ S( V: k# }% a9 y
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
2 a& x" b1 r" X% P$ I4 S1 b @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)) V/ A u D6 L1 y
GO
z8 B! N" w. k% N5 E4 Z9 r
- e. T9 Y( z6 J w1 p-- 将作业与调度关联起来
4 T7 y1 d" [# |; o! n# ]% NEXEC sp_attach_schedule
1 Y, ^ e6 ^' J @job_name = N'IncreaseUserCashJob', -- 作业名称, Z1 q( x' h% s4 n$ e" {, b9 q
@schedule_name = N'MinuteSchedule'; -- 调度名称
+ [( o# I2 }! ?0 rGO
- b: r9 D X+ C% P" v: M( ^% C6 x- ^ y" a8 h7 m
-- 提交作业创建到SQL Server Agent
- O" I; g. T y! Q* R: rEXEC sp_add_jobserver
- d l+ o1 _/ f. x/ F8 j6 l* `1 } @job_name = N'IncreaseUserCashJob', -- 作业名称
, M( |+ P. u+ V/ m+ ~ @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
( U- v& c, _) |0 q2 t, f; rGO1 I1 N3 Y- D7 n) |& I6 a" Q, ~
4 ~ ~+ \ Y" S4 S5 J. j8 v8 B
% n. o$ |, U9 X4 t: z/ `" w
. G- s8 w% A D3 v3 X. p
7 @3 ?1 _' ]9 ?/ _. P, z' m9 h- ^% _9 x& e% S6 Z. s/ R4 o
|
|