高级会员
- 积分
- 867
- 金钱
- 728
- 贡献
- 62
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
: e2 a' N) ^) R3 ~USE msdb;
0 u8 m0 \8 G9 D8 m1 C" F" sGO
$ ~# r$ y4 s4 \2 b& r
$ y( u9 _+ y9 J9 V, ]- E-- 如果作业已存在,则先删除它
# b: m& b- S0 p1 z$ i/ XIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
. G$ R& O" ]/ A" ^3 g& C' h EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';( A% S5 K: N. `' b7 K7 m$ ]
GO/ k$ G+ D6 P4 H/ ?
% }& `1 w7 M1 d( j) w# t-- 创建新的作业) ?! t: R& l* }8 i- b" [/ I, y% @+ D
EXEC sp_add_job * N. Q* m1 _/ l
@job_name = N'IncreaseUserCashJob', -- 作业名称" j d. }$ s+ v8 D3 Q+ x
@enabled = 1, -- 启用作业
( G$ U7 E" g+ \& E j& \! ?+ g @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
* ^' i+ ^/ T: ]3 w0 _9 o4 A6 I @notify_level_email = 0, -- 不发送电子邮件通知9 Q" F5 _7 t8 h, C0 B; c
@notify_level_netsend = 0, -- 不发送网络消息通知$ p2 |, @$ S! S! y L2 d4 I
@notify_level_page = 0, -- 不发送寻呼通知: R2 J# g, |5 \2 C$ }7 Z
@delete_level = 0, -- 不自动删除作业: R" m. p: T7 U$ P
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述5 o. I/ w k. W& ^& K9 ?
@category_name = N'[Uncategorized (Local)]', -- 作业类别. ^ g- E6 Z* I4 q2 ^3 E; B$ Q
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)# v6 k% o% F0 f. g) v
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员8 D" F+ Y' w* C8 k
GO
8 Y! M, {4 Z- n9 |0 T0 k3 d( o! B5 K6 g/ R8 u9 h
-- 为作业添加一个步骤
6 R, q. ~% l/ @EXEC sp_add_jobstep ' M0 v4 Q+ [' N8 g8 }
@job_name = N'IncreaseUserCashJob', -- 作业名称- g" b& ~7 p% B# G" s
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
9 x- @ g; n( R, @. t/ V @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)2 a1 B; h, S$ p# t4 q
@database_name = N'account', -- 指定数据库名称
( ?1 r! L( `9 o7 E8 E# {6 ] @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)1 O8 X, F: {. b, a
@retry_attempts = 5, -- 重试次数
" D+ I3 x7 ~1 W( d) D# H @retry_interval = 5; -- 重试间隔(分钟)' [/ K( k9 f2 @# z) i0 }
GO
8 O4 Z4 X& L, F7 I% U# u2 x8 C* c7 H: f# w
-- 为作业添加一个每分钟执行一次的调度3 r; Q& {' k4 q& Q9 a9 k
EXEC sp_add_schedule
- J: S! R2 ^- ?5 q3 M @schedule_name = N'MinuteSchedule', -- 调度名称+ y6 P. ^4 T! ~2 a
@freq_type = 4, -- 频率类型(4表示每日), F$ Y; J2 p {1 u
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
% \; [* N, a( ^$ t+ t# z4 c @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
& X9 u, E! R/ h0 O. Z9 s: v @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
: U8 i$ `& m1 n0 E2 l @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD) ]& H( K/ d9 O; w+ n( D
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)* }! n5 {0 G1 E3 a
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
$ V- ~, G$ D& H; t4 F) | @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)1 h- I% C6 ?) i9 ?
GO; k1 Q3 L0 w" F2 Y0 P, {1 z; o
* a; @5 f8 [: y& I2 V6 ^
-- 将作业与调度关联起来8 P4 h {( I! O0 v) j
EXEC sp_attach_schedule
# U% y$ Z9 D0 @# F( X/ ~ @job_name = N'IncreaseUserCashJob', -- 作业名称2 G6 {2 m8 N2 {# c: ~
@schedule_name = N'MinuteSchedule'; -- 调度名称+ _8 x3 ?8 |7 J" k1 z- Y
GO
" V$ A0 N. g2 a! z. S. q; P6 f; H' k( C& T8 B
-- 提交作业创建到SQL Server Agent1 S# X+ M' L: c) b a
EXEC sp_add_jobserver " V" K F/ l0 J0 h+ |; R: s
@job_name = N'IncreaseUserCashJob', -- 作业名称
4 Q( x+ D" v+ f2 K @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')' [# Q" [" v2 j# x5 m
GO
# K5 y/ ~3 _9 Q' i4 Y7 v% X5 H$ I8 U# `1 m w& X* J
8 `5 t# u" g: a# p: d3 n8 f
& [" `$ u, O0 z% o* z' ~. m
; J: N9 e: A6 u1 p: X2 o+ o" j$ j8 q& \, d' B: D
|
|