高级会员
- 积分
- 760
- 金钱
- 630
- 贡献
- 53
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
/ S. `2 N0 e2 s2 b! _USE msdb;) M5 w* c) g! V& ?+ r
GO+ F. q% z3 M4 b# C% X( H
) k% A" x1 |+ t9 V5 h) Z6 g
-- 如果作业已存在,则先删除它# y" E- D0 I2 G- y
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
) B( i3 Q" ?1 D) Z EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';$ `* Z* D+ O* j6 `; T4 W$ c
GO9 ]9 j. Q, y% a4 E. r$ J6 r
, T$ {: n9 ~ |- Q& D
-- 创建新的作业
. ~7 d: k- {2 U7 b! A7 {EXEC sp_add_job + j' C8 O# a& s
@job_name = N'IncreaseUserCashJob', -- 作业名称
. l, g- X; R5 t: l @enabled = 1, -- 启用作业1 T- ~- ]- j6 N/ R
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改; b' |$ F) D; Q/ o0 f3 e( ]
@notify_level_email = 0, -- 不发送电子邮件通知7 ~" P& o- P$ U" l
@notify_level_netsend = 0, -- 不发送网络消息通知
: M1 b# A- u* V6 Z" ? @notify_level_page = 0, -- 不发送寻呼通知" w* U- }/ Z' _' y" O7 d' x
@delete_level = 0, -- 不自动删除作业
$ l# V% V3 s* g( Y+ d: } @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
9 L8 n3 n: t, C2 e2 k5 Q @category_name = N'[Uncategorized (Local)]', -- 作业类别1 d% h- \; Y7 Z: e, n- u
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
" o: F. L/ \' v8 s" o% u @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
6 y7 ^4 V/ p% v' E) FGO
" I2 i0 l, K5 s" Z) R" I, u6 e- `- F
-- 为作业添加一个步骤
* C: l4 {+ |0 r% z6 I3 J0 J! a% T! [% |EXEC sp_add_jobstep
& y3 ]. B/ h% J @job_name = N'IncreaseUserCashJob', -- 作业名称# P4 M1 g$ c- X2 I! a1 ^
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
1 {, W' c: V: H @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)/ \: f- K. D/ h% Q
@database_name = N'account', -- 指定数据库名称
5 R( b% W1 w3 y( _/ R8 { @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
: u9 S" N3 a6 U$ x @retry_attempts = 5, -- 重试次数
# Q! n4 o) d8 H8 a6 ? @retry_interval = 5; -- 重试间隔(分钟)6 x k2 ~8 v. k9 \6 d2 K/ S
GO+ L7 m$ Z" f8 P: v+ x# [
/ K b* |6 {; [
-- 为作业添加一个每分钟执行一次的调度
% g+ E4 S: r$ R* _' Q2 _" uEXEC sp_add_schedule ; X1 g9 ]9 _, i' q& F3 m) r' [! P& U
@schedule_name = N'MinuteSchedule', -- 调度名称: F: Q2 D I" W6 M+ a7 Z+ S/ `
@freq_type = 4, -- 频率类型(4表示每日)
' {+ ]/ C4 m0 \* S* M: j2 E @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行$ G2 H1 }4 `' Q% l3 n9 A6 [' B- i( P+ ?
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)! c: y! O* R0 m, L. Z* Q
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
7 [7 |" g) p7 `! D @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)" D* V$ m6 T( o. V4 w
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
# M4 J( N0 X# j1 v" ?5 i! |# a) U @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期) A& h" H- F5 S( P
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)4 X4 J) M& V, V( @8 W9 J! U. [
GO8 _" a+ w {7 `; H1 i
) l6 \4 }/ q& g% L-- 将作业与调度关联起来. W" ~; R5 Z6 Y* j! R1 K
EXEC sp_attach_schedule
; C9 n! m+ o+ ]5 d+ ~( ^+ m. D( ? @job_name = N'IncreaseUserCashJob', -- 作业名称
8 O! B8 c; B) _( E @schedule_name = N'MinuteSchedule'; -- 调度名称
2 u# n+ O( E2 hGO
1 S: K4 }6 Q$ i: q
" e" m% d" `3 k" r- Y& a-- 提交作业创建到SQL Server Agent- E b7 S3 G& v
EXEC sp_add_jobserver 2 b5 k: M0 C Z! j& R
@job_name = N'IncreaseUserCashJob', -- 作业名称
! E5 ? v% F9 w2 k% _ h @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
/ P5 d9 S! K# v: v9 AGO0 M; I2 Y% E# I/ M, Z
+ }; i+ f U3 k9 A& \# q
6 k+ F. @- P; b: E& X( O
/ |: ~" W! L' a7 ?4 g; G' B5 m D
o- G! ^2 Y d& A5 n: ^7 Q* D
; w: k0 O) g! q/ ` S$ [( B |
|