高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------: L* X- J$ U/ l
USE msdb;
* h* [- [* q% F; ?GO
9 v1 H P- T6 V$ R( t2 t3 L
2 Z8 h0 S3 S; G3 x" y-- 如果作业已存在,则先删除它7 \, y1 N7 K' R/ n& H: |
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')5 A& {& V$ P. r0 S
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
5 u2 O2 ~& L' {; M- _* ^/ E/ A; CGO# F& }7 S. t' L" s- r$ Q
) T! l4 h% V$ K6 l. L-- 创建新的作业
h+ \: B- j1 K6 q" m* U# Y. TEXEC sp_add_job 1 V& e' g- j! L' O5 k9 v
@job_name = N'IncreaseUserCashJob', -- 作业名称; h, m7 o. ~& D1 N
@enabled = 1, -- 启用作业# J0 t7 L2 \! q% Z- J$ i
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改# I- x4 m. X9 t
@notify_level_email = 0, -- 不发送电子邮件通知% F1 {4 A! N& s
@notify_level_netsend = 0, -- 不发送网络消息通知
4 T) T2 _' E5 I @notify_level_page = 0, -- 不发送寻呼通知
% _! @* x& U$ R/ \% P) i, d+ f @delete_level = 0, -- 不自动删除作业# H9 Z$ V7 R6 N& [: `3 t4 f: V+ V5 \
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述1 U* y- q) M# h: J0 _
@category_name = N'[Uncategorized (Local)]', -- 作业类别0 |" V6 m' G6 {" c, Z3 b# l4 K
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
6 [" S. w& M- S$ C, ?6 @" q. | @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
! I! _: d1 [5 J1 ]! i0 F# iGO
& b; k8 L0 ~% d8 y ?# ]) b3 A; i! D* A! L0 `
-- 为作业添加一个步骤
2 E$ R. P8 h( XEXEC sp_add_jobstep
/ g! Q. c+ U7 b( }' w7 J9 F* F* c @job_name = N'IncreaseUserCashJob', -- 作业名称
# F+ B) S1 G q @step_name = N'ExecuteStoredProcedure', -- 步骤名称/ ]$ u* t( B2 [) h* o
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
1 n( f" N/ }9 L0 ^' I @database_name = N'account', -- 指定数据库名称
c" r' c1 s' H- ^1 Q8 _, s @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程), o/ C, A+ I) W( Z
@retry_attempts = 5, -- 重试次数5 _% y6 u) e; A3 A* q/ b5 j
@retry_interval = 5; -- 重试间隔(分钟) Z1 E" R4 u9 I: a4 U
GO
0 U: O8 V$ b2 G6 N" p, A- d
9 d; q3 ?( F4 Q-- 为作业添加一个每分钟执行一次的调度/ A# @' H$ m, H) e) C
EXEC sp_add_schedule ' w G0 X* C6 F- J
@schedule_name = N'MinuteSchedule', -- 调度名称* h& T: k7 B( n, @2 Z
@freq_type = 4, -- 频率类型(4表示每日)$ G2 Q) Z' X: c% ]4 }- }" J
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行" q+ k7 p2 p8 Z' X
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
1 j3 S: \! m4 G- ^* j5 { @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)3 }2 ?: g0 N( `# ^2 |& ]: c
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
2 D/ m) K+ M$ V, Y+ u8 d! w4 l; v k @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
/ {. n' W- {6 C- U5 ], J( c @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)- r+ @5 h) ]9 f. O5 V0 W
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)8 _& o3 L1 L$ C1 T m
GO
- N/ M u8 H2 r3 W
) P3 U7 I2 M( i* @-- 将作业与调度关联起来7 J, Q3 p& L! _6 T. F
EXEC sp_attach_schedule
. d9 r& d8 S6 b4 L" r @job_name = N'IncreaseUserCashJob', -- 作业名称
- L' v$ a: f7 W( B; U% [ @schedule_name = N'MinuteSchedule'; -- 调度名称
6 M7 }5 `9 z) JGO# L9 F0 ?3 |; n8 E
! B3 C B2 l6 O& \8 ]+ h
-- 提交作业创建到SQL Server Agent0 g+ `$ B' R( L( s, ~9 Y
EXEC sp_add_jobserver
R- ^. T; }: W @job_name = N'IncreaseUserCashJob', -- 作业名称! i: T. W; X l- f
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
1 {5 S* B+ t$ x" t/ x* W+ q9 m% u9 S4 jGO* ]% A \8 x8 z& ?
P# y: c( _' x
* h2 V5 P' |, M) S9 b6 ?$ P/ M0 d+ [: J7 X* w8 D5 G0 a
9 }; K8 ~# E% r: T
2 T& u$ J) o" h: |) R' W
|
|