高级会员
- 积分
- 867
- 金钱
- 728
- 贡献
- 62
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
3 P: i4 w$ s$ S' _5 I( y. YUSE msdb;5 C, N) i J5 n9 v, q- q
GO# B3 M( A3 e0 A; P1 a' a
/ m. V0 r( @" [
-- 如果作业已存在,则先删除它$ j* J: L$ V9 d- z4 u& W! q: y
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')5 Y. S: L @* t5 d$ V. T3 G8 x
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';) L5 q$ z3 I' o+ v' x" H2 \% k
GO
5 E* w5 E: B* `" C4 n# s, D8 S. ]; Q
# v p3 Q+ v" B* K' P, C-- 创建新的作业: b: r/ u& ]+ s, p3 K# }: x
EXEC sp_add_job
! _/ e4 s4 [: a. ] @job_name = N'IncreaseUserCashJob', -- 作业名称3 X; U% S: v. v* e a+ O: \
@enabled = 1, -- 启用作业 c' A' V8 J; e5 I. f" O3 {8 o. Q
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改+ `5 @( a+ {* Y) r3 H) O( }
@notify_level_email = 0, -- 不发送电子邮件通知
) H& Y; X2 |5 |7 t' A @notify_level_netsend = 0, -- 不发送网络消息通知
3 @7 z0 q3 C# U) z5 | @notify_level_page = 0, -- 不发送寻呼通知% _1 L( a& c, K# |! Z3 b; Q" ]
@delete_level = 0, -- 不自动删除作业
( P* e" w/ G) b7 r! B4 e6 O @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
3 \! n/ O/ b5 c) C! J9 A F. s @category_name = N'[Uncategorized (Local)]', -- 作业类别
4 p: f D) h' S; @! M; x. H, ` @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名): e( h( T7 X2 d/ |1 s
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员0 o+ E# H: U* |( Q
GO
9 c8 K/ n# j3 ~
) |9 Y% Z, Q0 \ a$ U-- 为作业添加一个步骤
* N1 i7 u2 |* o6 e. D4 FEXEC sp_add_jobstep
# c; E/ p& ]% B6 M: c @job_name = N'IncreaseUserCashJob', -- 作业名称: {; f: k0 Y8 D( E5 B; o
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
) c, {( P: U, H' W# c @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
7 A+ Q! T' O. U$ u1 n @database_name = N'account', -- 指定数据库名称; o6 r, [6 V! S7 s
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)! C+ q8 z$ B- X. g$ x+ |5 y9 O
@retry_attempts = 5, -- 重试次数
0 b9 j t4 e3 K% e$ Z @retry_interval = 5; -- 重试间隔(分钟)1 Z! Y% |0 X! ^8 m2 E9 @ d
GO. e) ~9 q3 X2 S( L/ c# I# [$ k
, C7 g" ^! Q$ n- `7 ^' N6 I
-- 为作业添加一个每分钟执行一次的调度$ L; m% R2 a8 P1 Q2 E. _5 r
EXEC sp_add_schedule
, p& E2 S1 U6 c: x @schedule_name = N'MinuteSchedule', -- 调度名称' ?# V$ g' S9 Z' v* s) S+ J8 J0 \9 p
@freq_type = 4, -- 频率类型(4表示每日)
9 n& O9 L# @# ]7 p* ~ @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
- O0 i1 k9 ?' M. |6 Q6 e& @2 Z @freq_subday_type = 4, -- 子日频率类型(4表示分钟)1 C8 d7 q8 A& s9 A4 @
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
8 {& J2 x9 t% {3 [9 T {8 J @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
/ t8 ^! b4 z2 I$ K1 F- Y @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
7 w+ s" m, j, X/ V+ B @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
4 X% k; P+ ~, e( K$ N2 i5 w @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
$ n4 k8 W& m2 G" ^: ?9 hGO
/ v+ f5 \- I3 ]1 c& j! y! W |& t# Y% ?! `/ {
-- 将作业与调度关联起来0 O3 T7 _$ o* e6 ]3 `! i
EXEC sp_attach_schedule - k b4 N0 ]/ H: m
@job_name = N'IncreaseUserCashJob', -- 作业名称3 \* J: c& }$ R9 i
@schedule_name = N'MinuteSchedule'; -- 调度名称
/ C0 ~! h+ d& b- C) vGO& U4 T( U7 L" S4 ]3 ?
, B R/ p- Z! _& ]5 y9 t9 w! b) k
-- 提交作业创建到SQL Server Agent' }; i1 ]. r, n, n, n3 I5 n
EXEC sp_add_jobserver + N' S0 G3 D( t9 R; B7 [
@job_name = N'IncreaseUserCashJob', -- 作业名称& ?0 G7 O" T0 S2 R$ P6 `
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
* v1 }3 m- q9 h- h1 T% K6 rGO& K; [& `; @7 x9 Y
: r2 k0 m9 Z' u
. `6 H% Y* P! X' j4 ^' o! O1 A% [2 D7 l) Q% |
8 q5 f3 `% n0 q, @/ j, F" ]
! s0 _* o- h1 S9 b9 e |
|