高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
3 T9 q8 N% t9 a2 YUSE msdb;
$ Y* I# u# q2 _5 x1 bGO
, ?+ ?% N, B. a6 f; S3 j# Z
& @* p" C4 f% k/ W6 ~-- 如果作业已存在,则先删除它
& S b4 x, U- y2 H# _IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')" D1 T" l) |2 _* `
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';4 _5 p9 N% Y. l/ t- p3 f
GO& U3 S: {' J* |% [( F" R8 ~
- w3 g% X4 \: d; p( q
-- 创建新的作业
! I: S2 u* R% ~4 {; F8 SEXEC sp_add_job ' n2 e. `$ m8 ]+ p/ ] R
@job_name = N'IncreaseUserCashJob', -- 作业名称
" V! ]: X. L$ j! l& | @enabled = 1, -- 启用作业
# w, ]0 G/ b: g' P! |1 | @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改2 a0 S; s) J) ?" P- f) @) P/ z$ G
@notify_level_email = 0, -- 不发送电子邮件通知
/ L. C0 D7 a6 f8 a" ?9 y @notify_level_netsend = 0, -- 不发送网络消息通知
' n! }/ h* s* W$ t* r4 F. N @notify_level_page = 0, -- 不发送寻呼通知
* N: T4 H4 w% W6 q8 N* H @delete_level = 0, -- 不自动删除作业
. n$ d/ Z; O" }+ ^) q @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
4 K9 O9 s; v5 R$ t1 t4 a5 d A @category_name = N'[Uncategorized (Local)]', -- 作业类别: ~" z3 }1 K, i4 Z# P" o+ ]: }
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
. |/ s+ w/ E- W5 m @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员2 T+ D# E7 M! L; m m. E0 m: d
GO0 Z' k2 i6 Q% ]# v( z- Y* D
- q t, }7 J: d6 u/ x; | p+ M$ Z
-- 为作业添加一个步骤
# l8 B1 h8 V2 r. [/ lEXEC sp_add_jobstep
2 n K4 G9 x! J1 L; o5 N. d6 y( _. g @job_name = N'IncreaseUserCashJob', -- 作业名称, M0 b& p( p$ m
@step_name = N'ExecuteStoredProcedure', -- 步骤名称' V' Y7 u$ c4 b! y: Q% ~+ }
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
/ ^- L3 l0 J( G" g @database_name = N'account', -- 指定数据库名称
3 S: I- X3 C* c& p @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)0 _/ c1 ~% I( [, t( r6 ? p" i
@retry_attempts = 5, -- 重试次数$ K p; s* `, y4 O7 ~9 q2 I& \
@retry_interval = 5; -- 重试间隔(分钟)
' x3 Y ], l+ T. I2 E: dGO& _9 a0 B( m7 j/ W% A" r0 e
2 k, q/ k1 O; d( a) @ |" H" Y* U. Q-- 为作业添加一个每分钟执行一次的调度
' W: K/ J3 R" ?EXEC sp_add_schedule 0 A3 @1 [( L6 L
@schedule_name = N'MinuteSchedule', -- 调度名称 g6 t. C! p: j; E: ~" O
@freq_type = 4, -- 频率类型(4表示每日)9 H% i' a) w: G! i
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行0 E' ~' h' s ?# U( J
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
0 d- U/ J7 t% T3 _ @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
; M5 S/ t; E" [) h5 I @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)! f) Y2 s6 v* q( `4 _
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)! @3 K3 m+ _" T0 P
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
1 G! A# J' O( \' _6 C1 d @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)! x; M8 ]: {/ e% T2 g3 F! R
GO
& P) j* u4 J' c( G7 l, H Z% m8 t1 ]) X3 X6 }; x! Q6 H
-- 将作业与调度关联起来8 S3 W( ~ g+ p! E; f5 {
EXEC sp_attach_schedule
8 L& }8 [2 }1 b: { ]; _; U @job_name = N'IncreaseUserCashJob', -- 作业名称
- J, D7 ?" L! ^* |; j @schedule_name = N'MinuteSchedule'; -- 调度名称
# | i9 C$ O. ~# \* C! X% RGO
; J; A; h z2 } |. ` b( `, q; Y5 }
; @6 b3 w4 H( c7 X-- 提交作业创建到SQL Server Agent# M# z5 i- c d% q7 i
EXEC sp_add_jobserver 1 Q; ]3 W2 s1 v9 l' C) _
@job_name = N'IncreaseUserCashJob', -- 作业名称
# V! x H" d9 f+ p6 @ @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')* y8 c3 j7 E% s3 p/ f6 \0 k* W
GO
3 I% y7 H" F2 b* \! D
{) ^1 r# d" d- m* |" H, P5 `: ?4 l; o. l0 k5 C9 r
8 N- y: V- J4 q& | d
, c- [) e/ V0 f/ k% H) x5 r7 y! K0 r% c D% d" D% R
|
|