高级会员
- 积分
- 812
- 金钱
- 678
- 贡献
- 57
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------7 t, f0 `: a) G) L. w/ a
USE msdb;( @$ ~: O8 O& ~9 r- {) C8 J; {
GO
f7 b# _% G- @: J, X" |2 w3 v# I8 g7 @# S
-- 如果作业已存在,则先删除它
8 W+ o# V1 g- O& _; z6 G, iIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
8 O# e. P1 `7 g2 s. u1 Z' e! `& m. z EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
3 X3 @* H! o, U, r; i6 w, V; N' _GO
% j: ?5 o& B. |: W3 R
: u' V3 ?* e' p+ }0 d/ h. b+ ]! K8 S-- 创建新的作业
$ e6 K) e- x$ X8 n+ tEXEC sp_add_job
5 E6 B4 _; \: I( a& H8 c! g6 [ @job_name = N'IncreaseUserCashJob', -- 作业名称
/ F7 E v" H, |& ?7 E/ W9 A @enabled = 1, -- 启用作业, y. y1 x9 V5 M+ G t4 a+ H/ Y
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改) f1 R& k" u( Y+ ]; o
@notify_level_email = 0, -- 不发送电子邮件通知) k1 m1 V4 P/ \" D$ n
@notify_level_netsend = 0, -- 不发送网络消息通知0 j* g' Z( m+ D( M
@notify_level_page = 0, -- 不发送寻呼通知
4 ^1 r% r8 }& i @delete_level = 0, -- 不自动删除作业0 o1 d3 h1 A& P" }2 }
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述- V0 F! x* l6 j1 |! b- V
@category_name = N'[Uncategorized (Local)]', -- 作业类别
7 d& t# i q+ d( R* m @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)) S2 z9 X& X# E* J( s. H$ G
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
) Q5 S+ ^" P" v: Q4 c* t: Z) S. fGO
" ]+ j5 L4 M% S7 W/ V& i2 O- S% J6 T9 c/ w& U# n7 W1 B o2 r- F
-- 为作业添加一个步骤
! _1 {! n% P N; e+ }EXEC sp_add_jobstep
8 S l1 P3 [1 L, t! C- \: ~: p @job_name = N'IncreaseUserCashJob', -- 作业名称5 h1 V6 [' d( t+ s' m: x6 v
@step_name = N'ExecuteStoredProcedure', -- 步骤名称0 M4 W" C/ r: F' a3 {
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
- i. w, p `$ y2 m @database_name = N'account', -- 指定数据库名称7 b' W0 q# X& |1 @. _ O+ q& c0 G) k t
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)5 G7 z: Z! `) c0 F; S
@retry_attempts = 5, -- 重试次数% P( G0 F2 k8 g9 u* M
@retry_interval = 5; -- 重试间隔(分钟)
; q: q8 A! q% v/ X$ [7 ZGO3 W) y" E8 N \. n! O5 E
! l% e8 B$ G. H( Y. d% \) F/ {
-- 为作业添加一个每分钟执行一次的调度- E: P/ G: ~5 q1 l" O
EXEC sp_add_schedule . F' J, G7 ~1 c, ]# v# s
@schedule_name = N'MinuteSchedule', -- 调度名称: b9 q) i7 e* k
@freq_type = 4, -- 频率类型(4表示每日)
. Q. t5 ?% f1 q9 ~ @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
8 Q: ^, G D. ~& g0 W" | @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
! K; O- _# w# I" m* ~( @ @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
0 ~' `4 P# b9 ] k j @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
$ r2 ^* Y: [( @7 V# z7 C! { @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
- d) C0 W% m0 ^ @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)5 t6 n1 c y0 \, f( c9 v
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
) S& }+ r" h+ G5 U) @GO
# B) A/ x& \4 T6 |& y5 C: n+ ~+ B; N ?; k% S% d
-- 将作业与调度关联起来% m# C' X, ~5 \" K" r# K0 ^; V
EXEC sp_attach_schedule + J0 ]! L0 F' n8 P
@job_name = N'IncreaseUserCashJob', -- 作业名称. Z- g' b2 Q$ [
@schedule_name = N'MinuteSchedule'; -- 调度名称8 s+ _. m" G* }3 a6 Z( O7 Y
GO
9 Z6 y! o$ F5 m+ I5 @! [) x1 [7 m9 A
-- 提交作业创建到SQL Server Agent- T) S2 O/ x1 J8 P0 b: ^
EXEC sp_add_jobserver
! s: R; z! o6 b @job_name = N'IncreaseUserCashJob', -- 作业名称9 L& Z1 z. s7 u0 }6 S3 a9 p0 \
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
/ K5 U& y2 {" _GO
# \6 w0 m& \9 w" U% Y+ V) X; v2 F
: I! I! v) A7 C3 ~4 A8 E+ F: ^- l! `7 Z0 o* ]( r
3 j% T/ ~+ c" }8 }
' a$ J, j, [: c% z
* n" Q" o) n+ G% e2 A |
|