高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
: j4 M: n! @% |/ i1 y+ y- E/ D+ O) sUSE msdb;
. S0 Y9 b+ _0 U6 ^6 H* b9 ZGO
C5 G6 B# h3 W. Z( H% [7 ?! t- u& ]' `8 A2 R* R
-- 如果作业已存在,则先删除它6 z& z( d; N5 b- S
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
& C+ w# K) V( h2 O5 z0 b+ @7 n EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
- h+ q! i) m! G" FGO
- F0 m; |/ Q9 X' c7 W" ~- D
2 V" a; v# }; U) R( l3 i-- 创建新的作业$ U% O! t+ l- k# u
EXEC sp_add_job
$ |9 \0 y. _5 E9 x- N% \+ p @job_name = N'IncreaseUserCashJob', -- 作业名称9 O# t! `2 i7 V2 H" l3 V$ [/ s, `
@enabled = 1, -- 启用作业6 Z# t! J1 K' ?+ @
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
9 }$ W7 D9 Y( O& w( x. k @notify_level_email = 0, -- 不发送电子邮件通知
; l4 h( e1 Y% `1 p @notify_level_netsend = 0, -- 不发送网络消息通知
3 B) s t0 K) L; }9 t @notify_level_page = 0, -- 不发送寻呼通知% ]) V" T: v% ]* | O- H
@delete_level = 0, -- 不自动删除作业2 ?$ U: `9 Q& j/ n& G+ f
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述; `. Z# H% J) u/ _- w' K* N0 o3 k
@category_name = N'[Uncategorized (Local)]', -- 作业类别6 Y8 ]3 V. f9 \6 U o3 ?- z: z
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名), Q( l3 {' K7 C
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员. i+ k g9 ^, c F# ?, F
GO
+ D6 U3 q2 N# T/ r! b3 G
) s# c( J/ H: U/ \" e# i4 I-- 为作业添加一个步骤
) J( c9 c. p. J! h3 ^EXEC sp_add_jobstep
9 o: n4 f4 B3 k$ c1 z @job_name = N'IncreaseUserCashJob', -- 作业名称
. T: I$ H9 ^1 J* l+ A% P @step_name = N'ExecuteStoredProcedure', -- 步骤名称
# y" G* _* d2 H3 W% Z @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
' f. z7 A5 Z+ H" u& F @database_name = N'account', -- 指定数据库名称
: b5 ?: _) d2 e0 L; @ @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程); Z6 c4 A4 D' V! O" q
@retry_attempts = 5, -- 重试次数
6 I) U, S- Z7 n @retry_interval = 5; -- 重试间隔(分钟)# ?/ H# e3 N0 K, p# _. R7 @" a
GO
4 n8 @3 K3 U9 s* u- q# N6 a/ \1 Y7 I ~, r5 y+ S
-- 为作业添加一个每分钟执行一次的调度) T( Y1 I6 n; f
EXEC sp_add_schedule 8 s( T# r m) I4 w3 R3 z
@schedule_name = N'MinuteSchedule', -- 调度名称8 Z) _5 n' g. x- E+ }
@freq_type = 4, -- 频率类型(4表示每日)
. A9 h2 D% @, ^ @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行. c, j& X w) {5 t
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
' }- Y0 ~9 u+ {4 q7 _* d, ] @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)7 ~1 I1 J( K2 @ l2 [
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
) L1 z: Z! B- I @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
: P! e' c. [7 r$ f. a C8 ` @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期). G: H; P3 F7 R" l9 O
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)/ ]/ x% B9 ^" N4 B! c- E: x0 I
GO
+ f7 M2 n" z M
; l& z# @6 A2 Z0 b+ f2 y-- 将作业与调度关联起来/ y9 I# t+ @' ^) M- {" P( Y1 s0 _
EXEC sp_attach_schedule
0 x: ~9 R1 ~: j# @, _5 y* V @job_name = N'IncreaseUserCashJob', -- 作业名称9 `5 C. r$ K$ X: m( ?5 e% @4 Y
@schedule_name = N'MinuteSchedule'; -- 调度名称
9 V; n, R8 N& NGO
: d1 ]/ j- F ~0 d% p5 |
X8 m( d" L+ r y- C-- 提交作业创建到SQL Server Agent2 D/ q, B8 k1 f: G- ~
EXEC sp_add_jobserver : L0 a3 R- i- u7 D4 w2 N
@job_name = N'IncreaseUserCashJob', -- 作业名称
$ |* [: h5 n& N! D. L, T( d$ ] @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)') [% ~$ E2 {( L$ B' ?/ i, K
GO
0 X5 \ E8 g; S
* z6 e! q+ N* x+ I! P; z
$ S9 `( E' J5 X2 \5 o
+ s( H7 y, D. d" ~" s, ]/ f, o) b. u" Q! {3 I1 i \
: d! n7 z: v) W0 u: w$ B
|
|