高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------3 i9 k1 O2 _, G
USE msdb;, V. A. q1 f2 _0 |; y6 E, S
GO' Z' o5 g# V! Y s
/ z5 [; P7 U' H1 d- a+ i-- 如果作业已存在,则先删除它
$ m! g- @, o0 j1 LIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')2 z- B2 _: V6 Y6 v$ u4 S9 `
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
1 |* z* l& }& F+ p0 k# B5 S' mGO
0 j+ F) y: S7 P1 A, B7 f
X- S, M% l0 h, _, R4 M+ P-- 创建新的作业, P2 f- G. Y+ y$ D/ ?
EXEC sp_add_job 4 ~% \0 x( a" H
@job_name = N'IncreaseUserCashJob', -- 作业名称
3 |) B: u z" z; e! i+ L @enabled = 1, -- 启用作业0 v- a. X3 [1 ~- Z/ K) w1 i0 E5 J
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
6 ~& u0 L T8 K1 W @notify_level_email = 0, -- 不发送电子邮件通知& P* _% X' b5 i a; X& b+ X% [ _" _) z
@notify_level_netsend = 0, -- 不发送网络消息通知
( D; H8 o1 w5 p; [+ _- t% J @notify_level_page = 0, -- 不发送寻呼通知
8 R( V% D, |' U2 [( W5 K! ~6 `. J! F @delete_level = 0, -- 不自动删除作业+ Q& m, J# t, P) f7 I7 y9 V5 P( R
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述4 R' T! ~& g/ o% x; J
@category_name = N'[Uncategorized (Local)]', -- 作业类别; C- }& f p3 Y$ T# q! ^+ y- f8 B
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
0 v2 m( b7 ]6 h* \) E @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员4 P- K. T, o h$ E8 Q- x v+ s
GO/ r* y0 [8 C* W5 y
6 b) Y N) {& q-- 为作业添加一个步骤
6 Y7 n( H6 O" L6 m; c% X( ]EXEC sp_add_jobstep
$ d4 b; {4 o- A! K @job_name = N'IncreaseUserCashJob', -- 作业名称
) ?3 Q, V8 s8 I @step_name = N'ExecuteStoredProcedure', -- 步骤名称( v) S6 j% M/ Z! ]
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)4 A$ C8 n# @: m" ~
@database_name = N'account', -- 指定数据库名称 Y$ Z4 w& I9 s" `, E" P6 X
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
0 Q& k: P5 D( C: V E @retry_attempts = 5, -- 重试次数2 E/ p$ K( A" L. a8 `2 f
@retry_interval = 5; -- 重试间隔(分钟)$ t4 \8 I1 R. t' O! J( U) Y
GO
2 }$ k& D, S2 B4 l- C! T0 [8 Q+ I* ?. y' I% v. `+ S6 ?
-- 为作业添加一个每分钟执行一次的调度
; F/ b5 ]* {8 D0 S. K2 ?EXEC sp_add_schedule
+ Q K$ @$ Y; o' Q# A @schedule_name = N'MinuteSchedule', -- 调度名称
7 W5 S$ F0 M$ L" C" O1 |" } @freq_type = 4, -- 频率类型(4表示每日)/ K5 K. b" N1 i t
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行* O2 u! e t; T! j$ z, Y
@freq_subday_type = 4, -- 子日频率类型(4表示分钟), T4 Y( ~+ Q5 K) K- ^
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)- v% B; V) H5 C$ p( }7 L, e
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
$ |! N. N- z4 @+ C. X+ K @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)2 ^' P' F( R: k: D, `9 n
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
$ T6 V) H1 }0 W2 H6 T3 B @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)' }) l! Y% O7 }1 r" U6 ~
GO2 ?2 x7 I; b: w& G/ g
! ?, l( A3 i/ |9 l9 I5 F* Y. e
-- 将作业与调度关联起来
3 V9 S$ Z9 ~, M/ y" tEXEC sp_attach_schedule ' O: L, P: r2 @/ {2 R$ q
@job_name = N'IncreaseUserCashJob', -- 作业名称
" h8 c8 W# q4 ` R: s @schedule_name = N'MinuteSchedule'; -- 调度名称- i; L( U3 Q4 I
GO
* e( `# r( _/ W" V; U9 E' s% m+ k. Z% T, w, R9 @) d2 \; k% s& Z
-- 提交作业创建到SQL Server Agent# L- Y. t* }) c2 s/ O+ E
EXEC sp_add_jobserver
8 p: w: j7 S0 e+ U( k% Y$ H8 n' a @job_name = N'IncreaseUserCashJob', -- 作业名称9 q0 J6 M# J4 ]1 a: q5 F" T
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
" a: C. n: M1 P+ y: ?GO. a& }$ m8 K# A6 Z* }2 A0 S3 ?
7 G# l2 q* S4 T4 P. y
4 L+ s8 ^- v7 e2 O
5 h& c F9 m& Q+ H4 u' [
3 K6 }& y: I# h; b7 [0 O
% U1 ?5 i/ _' K8 {6 e: G" Z |
|