高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
0 ^6 G1 ?2 ~% B* TUSE msdb;
1 |: X, v# Q) u# ~1 W4 l4 BGO1 ?7 S9 v I4 v& H
, W% |, T: a$ R8 O1 S) M-- 如果作业已存在,则先删除它) N( z" F! k! Q8 D# j
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
9 ~% S4 [$ S: A m) S2 R6 X EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';3 F$ x; d" `+ Z+ U, B4 b8 f
GO/ @. x( q3 B' y8 ~' N9 H% G
2 B* ~$ V9 G' u1 n" v, U- t3 _-- 创建新的作业
9 P& `2 n( V9 U. J1 r" n, E' AEXEC sp_add_job
& `+ h( O9 ?0 V @job_name = N'IncreaseUserCashJob', -- 作业名称 s# `6 r8 R: C. n
@enabled = 1, -- 启用作业
6 E5 n" n: l: s% s* u6 X9 I @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改/ V; R* L/ `% ^0 m; a0 {0 a
@notify_level_email = 0, -- 不发送电子邮件通知+ [, I) l8 V* D+ G( \" o
@notify_level_netsend = 0, -- 不发送网络消息通知
0 I" b& W) d6 n# r! Q @notify_level_page = 0, -- 不发送寻呼通知
9 f2 ]2 W/ g( _0 j$ c4 E @delete_level = 0, -- 不自动删除作业' ~ u# Z/ M* D: f1 Y
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
. o5 s. f" A" l2 m( \! N* ?1 p1 _ @category_name = N'[Uncategorized (Local)]', -- 作业类别+ u, p" v5 ?( u5 a0 i8 n
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)) d- @! \0 M- k% `" r
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员, w9 j) m, x& `4 u4 M
GO
( m4 J f1 v3 P1 H% x8 n2 x% y9 `/ R, x5 e* g: i$ U
-- 为作业添加一个步骤 ~: J: _/ j1 H
EXEC sp_add_jobstep * h- o' x' I2 |1 E
@job_name = N'IncreaseUserCashJob', -- 作业名称3 E+ e% E. M8 A3 m, b% B
@step_name = N'ExecuteStoredProcedure', -- 步骤名称5 P e; c- b% f- ?
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
/ x' M. ?5 l: g" ]7 }$ C @database_name = N'account', -- 指定数据库名称
2 @$ L9 S0 X9 q @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
. @+ k! D3 x6 y- i @retry_attempts = 5, -- 重试次数+ B5 L" c- z( N# }, C
@retry_interval = 5; -- 重试间隔(分钟): i& m4 J8 A' l+ _7 V% S
GO( P+ W9 Z1 Q8 ?" q
) c3 y) f, J$ g2 A0 K
-- 为作业添加一个每分钟执行一次的调度
1 \" ?& z7 x% t$ D; v2 xEXEC sp_add_schedule 4 P! ?- W2 C' t% q1 Q
@schedule_name = N'MinuteSchedule', -- 调度名称$ l% r( T% [$ v1 z7 t
@freq_type = 4, -- 频率类型(4表示每日)
& H, x5 i- W/ ^ @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
* M0 n% T) i3 A* @- X2 H7 H0 k0 j @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
2 u! ^/ @1 v- D) E @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
. K, _( ^ d/ s! Q- @3 j3 P @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)) q9 z0 T4 v/ t% m, b& [+ c! X7 g
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜), p, v+ a( [0 B. f; {8 |. r! \' w# u
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
$ C. k% q5 ^8 s/ I3 R @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
1 m% A$ Z9 J9 A" x3 u" JGO
& |* |: U8 l! U* f! N
) B2 C+ s$ `5 Y6 n/ _3 y a/ B-- 将作业与调度关联起来9 }) X) m8 X6 a8 h0 Z/ S1 |% K+ C1 G
EXEC sp_attach_schedule
* m% c1 I3 R6 D1 y0 l @job_name = N'IncreaseUserCashJob', -- 作业名称; t' O6 Y0 s; A: q3 W6 Q
@schedule_name = N'MinuteSchedule'; -- 调度名称
% \! g+ G; k4 A5 J* f ^) O# wGO2 F+ w/ g M8 q
2 n9 j, I$ Z2 P6 d" P
-- 提交作业创建到SQL Server Agent
?9 @0 l K( qEXEC sp_add_jobserver
( \# z J b) ?# u, ~ @job_name = N'IncreaseUserCashJob', -- 作业名称
G, b% {7 ^) I7 w* R+ j$ } @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
( F! A' B7 o( P- ^$ K( V, i5 kGO
5 c8 K X$ ?5 h+ n- L$ Z( ?+ z' I$ K6 A
7 A" G n0 D* n; @$ ^6 u, z) D5 O8 Y. B2 } E
0 f2 ^! i6 a1 ?3 D
8 d$ a0 H/ B. n ?% `1 g |
|