高级会员
- 积分
- 891
- 金钱
- 742
- 贡献
- 72
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------, |4 c' C0 Z1 y8 U: f8 I, d
USE msdb;, ?8 }, l9 k3 b4 \+ V. F
GO" i. Y, Z. h3 g
; B4 @ A" k! s0 a1 P2 S
-- 如果作业已存在,则先删除它8 V1 t3 h v7 ? _7 [
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
/ G2 {0 S0 @* D& } EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
' Y- y& D; r8 y! b( b7 L5 DGO
\# P5 C8 K i% q/ P$ A8 D
7 C( Q& t, D" v% O, \* a-- 创建新的作业4 \5 k- l& K* s
EXEC sp_add_job ) w6 B, S, c z! x' @1 z6 m
@job_name = N'IncreaseUserCashJob', -- 作业名称4 t8 g+ b I2 D
@enabled = 1, -- 启用作业
5 C+ \+ b7 v/ [9 K* E @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
) n+ F! A1 z7 ?+ V4 z7 o8 s. K% p6 r @notify_level_email = 0, -- 不发送电子邮件通知# p- m+ S0 o3 a) `
@notify_level_netsend = 0, -- 不发送网络消息通知
' ^# r+ j- Q9 Y2 \- h. E9 i! m @notify_level_page = 0, -- 不发送寻呼通知
3 X% i4 L- W% o( Q4 J k) T @delete_level = 0, -- 不自动删除作业
1 @, G9 |8 w+ C @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述" u; }" Q" ~% @2 S! V
@category_name = N'[Uncategorized (Local)]', -- 作业类别
: L. I: ^( H0 R" b3 _( M$ s0 ] @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)5 z7 w1 t: b& J9 d3 g1 Y
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
" I: y! M4 n1 a& Z( o+ r9 C3 @4 mGO) j3 A/ C# h# Q) ^5 @
/ ?8 N5 s: D$ a) U' {-- 为作业添加一个步骤* R8 S% l0 k% g8 R+ N8 r
EXEC sp_add_jobstep
( }( m/ v6 m" {5 g* f7 h9 n @job_name = N'IncreaseUserCashJob', -- 作业名称" b# ?. r4 i1 W2 B/ j
@step_name = N'ExecuteStoredProcedure', -- 步骤名称- O4 @! `1 ]1 {9 r+ u
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
7 L; }; S/ P) c, ? @database_name = N'account', -- 指定数据库名称( H+ q( ^1 G; d5 M$ T
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
8 h0 r$ c; i0 w7 z @retry_attempts = 5, -- 重试次数" J' O- r. \' g" U1 c6 H
@retry_interval = 5; -- 重试间隔(分钟)! R8 v P! r( [: `, u
GO
" R+ D: o2 H& }8 V, P# }! `1 q6 [5 z4 U- d$ j) p0 q J
-- 为作业添加一个每分钟执行一次的调度. a$ Z6 I! T; n3 c. O+ D8 b
EXEC sp_add_schedule
6 x2 \1 O Z/ N; E* \ @schedule_name = N'MinuteSchedule', -- 调度名称
( ?8 Z8 e) g6 y& k9 a: N @freq_type = 4, -- 频率类型(4表示每日)& ^6 v& A* }1 g6 w
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行& @+ l$ c( g; O; y9 u$ }
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)* k1 z% B1 l# {' A
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
+ I( t( P% [; m. y- T4 R9 i @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
7 u) J/ ?4 d! M) C4 l, b" k2 H @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
3 @% V/ C" e7 a# W) Y6 W$ C @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)* y9 X" w! x/ a- t! C6 |
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)5 {/ W- H# s/ z
GO4 F* |4 {* r9 |
8 K+ a0 v' V, l( w" e/ R# D-- 将作业与调度关联起来. \( q, s4 A/ M: b
EXEC sp_attach_schedule
8 c1 J; n6 u7 f' g! u/ |( g @job_name = N'IncreaseUserCashJob', -- 作业名称
8 u- j: U5 Z# V5 G! l: s0 L' t9 D @schedule_name = N'MinuteSchedule'; -- 调度名称4 z3 Y1 I8 `; a# _% g( @( k
GO
4 e: X( R" j" L- ~1 O0 J
w" z1 J- P: P) R; q8 ~5 t-- 提交作业创建到SQL Server Agent
0 O5 |% ?8 n0 VEXEC sp_add_jobserver
5 E3 {& u- o7 o @job_name = N'IncreaseUserCashJob', -- 作业名称
# Z7 G0 r( C/ z) Z! J) z* D9 Z6 u @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
# J0 o( Y2 B" a/ v2 g, g8 }: w/ U" ]GO V2 p7 @5 u# i8 T5 y' x# Z W
& |# x) D3 P- V' c
& |+ ^" g( B+ o* b# g# c# P$ I5 R+ F3 c4 v- o
& e9 W7 _7 R+ F- _$ ^% Q$ @' [) g7 d# a
, Z. s4 g4 m V# t; Z! [% y |
|