高级会员
- 积分
- 679
- 金钱
- 557
- 贡献
- 48
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------6 W* q. V+ d2 L
USE msdb;
2 j+ M- @5 H/ Y: t7 ?( f8 _; kGO# _& P2 j0 F* }, o$ U _
' D5 W" \2 L$ e4 ~& [
-- 如果作业已存在,则先删除它
6 r- r2 X) h: M; J `% f7 T' oIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
. C9 T4 x7 J, R( \ EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';7 b( h3 V, k8 x' ?# `8 A0 a: u4 R
GO
$ f1 I7 m( @ S( K
! V0 h4 o5 q! }' m! c* l( N- u4 }+ |-- 创建新的作业
( f* ^. i* T9 |4 D/ b- HEXEC sp_add_job
Y7 T2 o" v1 C% u @job_name = N'IncreaseUserCashJob', -- 作业名称' ]# z/ ?& z% D
@enabled = 1, -- 启用作业
- K7 [/ Z+ A. x5 E) }6 a @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
, y, A7 H! _5 w' C8 U @notify_level_email = 0, -- 不发送电子邮件通知, c: `/ x9 K& ?3 y1 S" G
@notify_level_netsend = 0, -- 不发送网络消息通知
7 ^- R& ~$ M- ?3 g% A6 s6 N% c @notify_level_page = 0, -- 不发送寻呼通知
: i2 \ s8 v' g W; t$ F/ o$ i @delete_level = 0, -- 不自动删除作业
; x' N+ t' x- ~' G" o @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
" }8 y$ I; @, H6 ] v+ s/ t4 Y @category_name = N'[Uncategorized (Local)]', -- 作业类别7 A5 V' W! C6 T& j7 X8 l. t2 o/ s
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
' J# |& S$ y' G3 P% k9 L @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
5 u! E7 w4 ?8 m4 {GO3 d! W! v7 Z( M+ ^1 }$ @7 f
7 @ k0 O9 @1 `, T8 v-- 为作业添加一个步骤
/ g+ s+ h* W. g( M( nEXEC sp_add_jobstep
7 b- v7 r5 ~9 E1 d: r" A. P @job_name = N'IncreaseUserCashJob', -- 作业名称
* U, g4 m& P5 D* G) a. Q2 ^4 ^9 i. e6 e @step_name = N'ExecuteStoredProcedure', -- 步骤名称
. G; c0 j- {) z1 L/ M9 A @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
+ I" J, w3 |8 G i4 M @database_name = N'account', -- 指定数据库名称- N+ k( h* l: x6 T- E8 O+ b
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
I8 R* N! N* F @retry_attempts = 5, -- 重试次数! E' |; Q& N- B i
@retry_interval = 5; -- 重试间隔(分钟). a; Z( H8 N7 P! q: g6 Y) h, e. R
GO/ i" @5 o/ t% ?
' I7 N' x3 w8 \% h& {# U-- 为作业添加一个每分钟执行一次的调度6 n& O1 n% a: G9 |, H; M Z0 j
EXEC sp_add_schedule 7 F7 F9 z7 Z* k4 a
@schedule_name = N'MinuteSchedule', -- 调度名称4 Z9 N! q* o% X8 p
@freq_type = 4, -- 频率类型(4表示每日)
/ N" O- p P2 D6 [% e! k @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行. l- B7 _: K% W% q/ d/ X( M
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
8 ^. ?- H. [. p& R# ~, u1 X0 F @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次), M, u" P+ h P, w! N
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
" c5 A- X% f9 B2 ` r% |0 H" K; h @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
: t0 Y, y5 k. F' `( U+ E. \ @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)& g/ e# E' w# r: D
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)" [) A W* |1 o! n
GO
^7 e/ W# i: l3 {2 x
5 M e2 G3 r3 f9 u0 @' @! t-- 将作业与调度关联起来) K% N3 r& p2 }
EXEC sp_attach_schedule
8 s) ], ~: ~: _" O @job_name = N'IncreaseUserCashJob', -- 作业名称1 w4 S2 `6 L( P/ u* }
@schedule_name = N'MinuteSchedule'; -- 调度名称
8 j8 B+ X; l% _" I6 rGO: ^8 G! ?# y( |: r5 u7 `; J2 m% U
* F$ q* Y. I: }$ r4 E-- 提交作业创建到SQL Server Agent) x, g7 @+ D5 Z$ s
EXEC sp_add_jobserver
. a* Y" T9 } Y$ h b; ~" t @job_name = N'IncreaseUserCashJob', -- 作业名称' S" k0 |# Y- J: I
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
: P$ a! P% O# kGO3 k" J$ r& Y# a+ K2 i% j
! w! c8 {# D& [3 h$ i
9 }& I+ }5 b' o/ c! h6 M$ H
% H* X3 B, }7 C8 s% ]
; C. P1 f2 d7 V. I, `. |% Z
) Q5 C4 @! _- l$ K, _+ x) {" } |
|