高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------( \/ K% Y' M$ J3 [: y# x' W
USE msdb;. i# i p. O3 x
GO, ~: X% U( | L% D
& Q; X( }1 L7 h6 Y( p
-- 如果作业已存在,则先删除它
1 w- o2 S! _3 I; h0 K0 pIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
# l; m) A1 Z2 M7 p% f! {- N+ m EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';' t3 U5 m' R8 i5 N! \
GO
* u) f( n8 d1 P5 w3 h$ n0 m" B* N* w$ r# @" p
-- 创建新的作业: H6 g1 m' }4 v
EXEC sp_add_job , ^% z6 O$ c8 N+ u( d$ y2 w" {7 _# i
@job_name = N'IncreaseUserCashJob', -- 作业名称1 ?1 t2 }% `% L, D
@enabled = 1, -- 启用作业! E) p, z& Y! q* j9 z% b8 `
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
% Y) j# d( E! p+ }- W @notify_level_email = 0, -- 不发送电子邮件通知5 o& W7 F2 ]' }. H
@notify_level_netsend = 0, -- 不发送网络消息通知
9 l3 ]. q- W4 ?- t1 L4 F @notify_level_page = 0, -- 不发送寻呼通知
( d; C: h4 d7 [: F# s8 \( p. w& g Q @delete_level = 0, -- 不自动删除作业
+ I, f- ~) U7 ~5 Q6 }+ D; b @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
" m+ N+ N. }! _$ k# T1 e @category_name = N'[Uncategorized (Local)]', -- 作业类别, \, A$ b0 J, C* [% A5 T* U
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)0 G: P2 k5 q! @" O% r0 f4 g
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员3 V8 s' V4 P7 J9 g0 Q6 _ n
GO
3 d" Y& m7 w* ]" _3 V0 P7 X0 G4 V# X8 P7 I$ }$ b) P
-- 为作业添加一个步骤
, u! S( ^9 W( x8 s& xEXEC sp_add_jobstep $ l# L9 K% C$ T
@job_name = N'IncreaseUserCashJob', -- 作业名称4 j9 A' v9 U d; M8 V& {
@step_name = N'ExecuteStoredProcedure', -- 步骤名称7 ~+ D9 {+ n" g c
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL): ~( D4 Q+ h( |
@database_name = N'account', -- 指定数据库名称
6 K* J$ u' i, C- e @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程), G, l4 p) j& z( m# ^2 J
@retry_attempts = 5, -- 重试次数
! B! ?0 S2 R) n9 r" o5 D1 _1 P @retry_interval = 5; -- 重试间隔(分钟)
' v2 ^: U F# D6 m0 A+ a+ JGO
" }1 W; t/ n2 Q) j/ S6 @7 D4 v( c- k* e% x- s6 @. G
-- 为作业添加一个每分钟执行一次的调度% `# x$ R6 E' m2 K9 V
EXEC sp_add_schedule ' C! A! F4 S, y- v3 u7 J4 d* s% N0 g$ B
@schedule_name = N'MinuteSchedule', -- 调度名称& V' f) S; g, y0 G; ?
@freq_type = 4, -- 频率类型(4表示每日)3 I8 S* V3 {! K7 F1 Y
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行( ?9 v6 f6 w3 L! n1 P7 Z+ ~7 V0 g
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
6 W9 r* ?8 D$ o0 l! E$ X @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
6 {3 g* e1 O2 @3 |$ |4 a. R @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
7 Q0 u2 i' ~; F: R5 A @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)0 J$ P; g9 o( K' d
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
3 d- y' H! z7 t$ u/ O$ X @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
6 B( U) t- r% n4 y0 \/ VGO
; A% p/ x) ?. [: o, A
: [9 p, `7 m3 B# K! w j }-- 将作业与调度关联起来% e: n' f0 O, _% Z
EXEC sp_attach_schedule 6 @: ~. m0 g; n3 {/ b( Q' Z' S
@job_name = N'IncreaseUserCashJob', -- 作业名称/ T: h! `, U8 v: E, P
@schedule_name = N'MinuteSchedule'; -- 调度名称
* q% j& S$ V* x8 J0 cGO
; @9 X/ q: m( Q2 o
/ s1 A, h, u3 O5 v9 G2 Y-- 提交作业创建到SQL Server Agent6 e3 f& Y8 G0 U5 q! ~' ?
EXEC sp_add_jobserver
* l7 y7 g2 j9 H) s. |# x7 ^$ m @job_name = N'IncreaseUserCashJob', -- 作业名称
g# I/ R- r Q% A! F1 h, k8 b @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
+ K- W5 n- f1 P* f% B; lGO8 `5 m& U" {; T9 @" s
9 J# \5 U+ v% t/ J( K$ O0 P0 g" `4 I! o# _; X" a
j+ U8 ?* c& q0 `* B
+ t7 |- I3 @# o9 k, E. ^0 l# C3 G! s0 U
|
|