高级会员
- 积分
- 867
- 金钱
- 728
- 贡献
- 62
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------8 F$ _; [0 C5 L/ K3 ^" X! {
USE msdb;# \5 u2 o0 ^2 Y9 P. s+ w* H
GO
6 E+ s I7 \% }) B7 b3 w" n5 o. j @5 d E: L
-- 如果作业已存在,则先删除它
; b7 U6 E: C0 R' T# `: v. uIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
, S* q$ u; D0 j* i9 ? EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';+ Y: @/ m9 b9 d* g3 g5 _1 q5 X
GO
( e, d; c; d; q/ `' j1 p& g8 q0 y* M9 y% U2 r" K
-- 创建新的作业
7 o' i& {; K! IEXEC sp_add_job 3 A! E0 H1 P0 ~3 q& _
@job_name = N'IncreaseUserCashJob', -- 作业名称
5 k- h' {8 a/ c" ? @enabled = 1, -- 启用作业
2 ~8 Y, M- V5 Z1 m u @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
3 F% p2 ~( w: u3 s2 u @notify_level_email = 0, -- 不发送电子邮件通知/ ]& L" g7 \8 l1 J S8 E5 [
@notify_level_netsend = 0, -- 不发送网络消息通知
" ]4 v/ J; m) W4 M( T @notify_level_page = 0, -- 不发送寻呼通知, R( A2 t9 ?- u/ Q# B$ h1 ~: \
@delete_level = 0, -- 不自动删除作业
$ A& h& @, ^0 a! B+ q! ~ @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
7 h( J! e# t' R% C; s% l @category_name = N'[Uncategorized (Local)]', -- 作业类别
/ C. L* k* v5 k( W% K @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)( E1 ]( R; z" d/ W
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
' b) ~: x5 O, D+ d0 A' e iGO0 X N4 ~& V/ s' I5 d
9 T" M- F" _, Q9 p' \, |
-- 为作业添加一个步骤; [8 \* w ? V; T- ~1 y
EXEC sp_add_jobstep $ q& |% Z4 n( _
@job_name = N'IncreaseUserCashJob', -- 作业名称
% g; K! y: r; m& D/ d @step_name = N'ExecuteStoredProcedure', -- 步骤名称
/ M* i6 y$ v4 T& z+ R4 N @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)- q6 [' C+ b* K6 u( `, ]
@database_name = N'account', -- 指定数据库名称7 x/ M% j/ ]3 J9 ]. H
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程). q# l ?) L1 {$ ?5 [/ D. _1 G4 Z
@retry_attempts = 5, -- 重试次数: }" h( T+ L1 a: I9 T3 s1 H# c
@retry_interval = 5; -- 重试间隔(分钟)& r! t; O* A% A- l4 ~1 m: b" E4 }7 d6 p
GO5 {2 R/ h V: ?9 V& J8 L1 v
0 [) Z( K0 u" g3 }2 F-- 为作业添加一个每分钟执行一次的调度
9 f4 X6 ^2 g8 {( F- t8 sEXEC sp_add_schedule
% I; g2 `& i2 [- r @schedule_name = N'MinuteSchedule', -- 调度名称
9 y0 z4 W: H: x& a Q @freq_type = 4, -- 频率类型(4表示每日)7 t; x8 b' P& E1 p0 s
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
9 }6 S- B) B5 F4 n: f @freq_subday_type = 4, -- 子日频率类型(4表示分钟)+ X+ I, ~" k( T1 I
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次); I# V4 Q0 J5 }8 V3 u. k9 w" t- r
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
( N. g+ m/ s6 i/ Z% @' s @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
5 k5 O) W" L% c* v# B5 h3 x @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
5 O8 l4 `( L% z @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
r* v4 j9 n$ Q" C( nGO
- f4 Z+ P7 e2 C9 X9 P* J3 M' v2 K) I$ P
1 b' h4 \2 x9 _7 _3 I-- 将作业与调度关联起来
+ v5 s# W; ~$ }+ x; }; I. cEXEC sp_attach_schedule 6 k+ F6 c; O* a- u" R
@job_name = N'IncreaseUserCashJob', -- 作业名称
" w" h" i# z) }/ P* w @schedule_name = N'MinuteSchedule'; -- 调度名称" f" }+ L, a1 k7 ^
GO
) k9 d+ n' d# W5 R4 Z. K
1 w. d# A+ a- n3 @; L. s8 E( ~ P-- 提交作业创建到SQL Server Agent6 P) C# y( D9 Y o* e
EXEC sp_add_jobserver
) i2 L, a K( @) {6 k1 t @job_name = N'IncreaseUserCashJob', -- 作业名称
# Z$ r2 m+ g$ \$ b/ p P* y7 `. g2 T @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)'); A! D* y' ^1 j- F% h
GO
/ C5 p' T6 e" ?; {2 Z2 @3 n. {
$ A9 |/ s) o% h8 o9 |# H, |6 H$ N1 |% ?& G1 U. Z7 a/ z5 M
O# F; C6 u( m$ H% C5 \. e/ h4 T# x! A; |( i
|
|