高级会员
- 积分
- 870
- 金钱
- 730
- 贡献
- 63
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------" u" [6 I& t. E7 W
USE msdb;: \# O( k8 m2 \) k9 M l2 @% z
GO2 T% T# l1 h: n. m7 v
: ^. [; R/ J1 G* A8 b
-- 如果作业已存在,则先删除它
) X* \5 K# l* d( S& j: H# q$ @ UIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
/ {; C8 k7 J/ u7 c5 B+ `- D EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
e% R/ X. y- B" f$ k1 b1 vGO
: a2 B e- n1 h' u( C5 N. |7 Q5 {1 x, i
-- 创建新的作业
# p4 F0 r) c* R* F: v7 I) s H5 yEXEC sp_add_job : n7 J% Z) k: N- X. _
@job_name = N'IncreaseUserCashJob', -- 作业名称
( L1 w h3 a3 v5 |. [* x @enabled = 1, -- 启用作业" ?! Q* Z. V+ ?; z0 }
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改9 d6 ?! t# l3 |3 H
@notify_level_email = 0, -- 不发送电子邮件通知
6 ]7 P+ _! p8 W; o: A& X @notify_level_netsend = 0, -- 不发送网络消息通知
) B ?% D, |% h, F4 y5 E @notify_level_page = 0, -- 不发送寻呼通知2 B' Q9 y0 y" ?7 o' p! l
@delete_level = 0, -- 不自动删除作业
# ?) s2 i) Y/ w @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
9 ~$ L& M" b; |; B- Y x& e @category_name = N'[Uncategorized (Local)]', -- 作业类别! ?) M! [1 Q. i" W R7 Z
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
1 M/ o; E. `9 Y2 R$ F6 b: x @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
$ F8 {9 x( K: h% c( d5 h5 a- eGO2 Y7 q8 d- ] b# `. o4 M& Q
% N" E3 _2 n+ r7 c1 H8 z-- 为作业添加一个步骤
: |/ j( _' c! D9 s* L, ^0 |/ qEXEC sp_add_jobstep
$ C0 i" O. x/ A, `3 t5 k @job_name = N'IncreaseUserCashJob', -- 作业名称( l" h+ V6 c) n9 S9 { m7 |8 B
@step_name = N'ExecuteStoredProcedure', -- 步骤名称0 l P! J5 W, Y
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)$ E- P" u% j7 W
@database_name = N'account', -- 指定数据库名称. F5 U, y. i* @% M+ O/ h
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
3 }% o- q2 j4 j" U" \4 ] @retry_attempts = 5, -- 重试次数
! T! p6 J+ E$ U! } @retry_interval = 5; -- 重试间隔(分钟)0 ]: j9 N$ I0 [/ G( w$ b0 H @0 b
GO
: f7 I4 Z$ u/ Y( L; q7 \
* f% A6 Z. s9 H2 j9 d-- 为作业添加一个每分钟执行一次的调度1 H3 \4 n- S( q% c6 u5 v
EXEC sp_add_schedule
7 {+ b; J6 f2 s% F) i! Z6 B @schedule_name = N'MinuteSchedule', -- 调度名称, K/ h( j7 Y7 u+ r
@freq_type = 4, -- 频率类型(4表示每日)( c( N+ `4 C# O3 d% e- T8 A5 |
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行4 @6 a( Q1 K4 A( W/ K
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)& i7 w$ }4 t; u$ r
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次). @; n& y3 \1 m' @
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
5 ^. \2 p' t2 d* D0 P @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
2 q1 ?6 `+ X2 e2 S& D6 Z @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)' m/ I) D. u3 @. E7 S4 y5 f
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
" n! h7 p: @1 R- `: R @ JGO( y7 s9 H- f$ i4 l
% A" C7 W, n, x
-- 将作业与调度关联起来
- z6 O5 s/ G% p* y% K: J% @EXEC sp_attach_schedule $ }- y, m0 M- W3 c0 u9 n. h
@job_name = N'IncreaseUserCashJob', -- 作业名称
0 D% Y/ X6 H& K8 g @schedule_name = N'MinuteSchedule'; -- 调度名称' P, T/ ~/ [4 h+ w# m& T7 K
GO( e, T( z [) z! D0 y) m
4 G5 ?7 P& U7 n$ M9 P
-- 提交作业创建到SQL Server Agent
3 c# T$ H: t' C6 X5 [4 G) g DEXEC sp_add_jobserver 9 i# c: ^/ q# m- Y( f! e. w0 E
@job_name = N'IncreaseUserCashJob', -- 作业名称
8 M, c5 Z# G' h: e) N1 }/ E: y2 ^ @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')" n6 e* e6 E" }/ ?
GO
* G- z8 `: s# n+ r. F& d
- b! C; [. L q( R* W$ P+ O5 X7 D4 j8 `
X. f( w$ I, G
# }* j$ ~. O) L0 V- h5 N
- M' Z6 H. \- H6 i. P6 O [! O, a0 U F! u
|
|