高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------1 f/ l9 V# Z2 z7 k9 x [( y! \
USE msdb;
7 g* I) V/ ?9 l+ ?GO
7 p; [" U0 E5 g& N8 j8 l t( d1 C! K9 F7 p& M
-- 如果作业已存在,则先删除它
2 D4 U1 `- r- ` I9 m! RIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')4 g; a& w7 C: g
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';& o; N* }( F4 x/ k' z- M
GO) B, f& O% S+ y7 X
9 T, J4 O8 l+ p-- 创建新的作业
( @9 W- k. J+ c; T) g. m; ~* SEXEC sp_add_job ) i1 p2 Y d" u* M# N ~
@job_name = N'IncreaseUserCashJob', -- 作业名称+ N2 F% N. }: d7 O2 a) V- P2 O
@enabled = 1, -- 启用作业
8 |3 k+ D' d; ?/ H6 r% g+ B* f @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
1 z$ k! o2 P% d* K @notify_level_email = 0, -- 不发送电子邮件通知
/ V- w6 S2 a6 J& f, ?! k/ K5 K' f @notify_level_netsend = 0, -- 不发送网络消息通知
8 L( X2 a4 d% M5 M4 l) ? @notify_level_page = 0, -- 不发送寻呼通知
; H. H, ^" ^0 R6 w$ P @delete_level = 0, -- 不自动删除作业
s7 e7 Y+ z( p @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述+ @: E8 I9 g8 t+ N( m3 A, G
@category_name = N'[Uncategorized (Local)]', -- 作业类别
( J% d* t, ?7 s @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
9 [' |# v) R- m1 t @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
+ k0 ]; a6 a8 [7 f I# NGO
7 \* l0 Y. J. _* ?$ p, p3 j# Q$ f2 A
-- 为作业添加一个步骤
% k8 _9 T! s; i- p; g1 [EXEC sp_add_jobstep
4 ]6 y' T9 r) U. r7 j \: X @job_name = N'IncreaseUserCashJob', -- 作业名称
* g4 n4 ~" W* y( Z+ c$ G$ R) A @step_name = N'ExecuteStoredProcedure', -- 步骤名称1 x0 n2 `" _& g8 h2 a1 t
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
, g# E3 f/ m) V g6 K2 X @database_name = N'account', -- 指定数据库名称$ b, }$ N, J& j) B& Y( {
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
) V( z. Z9 M5 g9 w @retry_attempts = 5, -- 重试次数
4 [& l4 T+ o- S6 Y5 s( c @retry_interval = 5; -- 重试间隔(分钟)9 r; {$ s1 V/ _ k O: y' z( L5 I
GO
% h. G1 \8 l, U) l* x7 T' x
+ N c$ s# t9 t* y4 M5 |! Z8 M-- 为作业添加一个每分钟执行一次的调度
0 n" s4 C7 B: _8 H; JEXEC sp_add_schedule
, m- {& b- _- u9 Y* _% O @schedule_name = N'MinuteSchedule', -- 调度名称4 N: i) `# {4 {
@freq_type = 4, -- 频率类型(4表示每日)! V: L; c( k& [$ z
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
8 n2 u: \. \9 W* H, H0 {0 J- T& u @freq_subday_type = 4, -- 子日频率类型(4表示分钟)9 O+ Y" M4 N4 [/ j( W# O
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
) ~6 I3 V% x2 R$ O0 Z @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
, A* g# u, a ?% d4 u @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
0 M3 v8 h8 B" N! x$ b1 U' o @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
& ^* m$ k) b' C1 P; ^2 W @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
6 M8 [ P* K4 x# Y* D- G/ m/ J* AGO' l+ L2 E7 o! T* E% U
3 p# V5 j9 D3 c( w. q-- 将作业与调度关联起来
5 r' x9 C$ J: o. a9 ~. aEXEC sp_attach_schedule
" Z, C, j o) u# s @job_name = N'IncreaseUserCashJob', -- 作业名称" |) i0 u: S- G; C: c
@schedule_name = N'MinuteSchedule'; -- 调度名称
( F+ Z- J9 G; L8 ], C+ TGO# I- M2 v' h4 k! N; y. E0 l1 N& R' b
% I$ t: Q7 O9 ^% j! p
-- 提交作业创建到SQL Server Agent
/ S4 Y% I2 z% J4 ?) O7 pEXEC sp_add_jobserver ( z( a) \. M6 ^# B; x/ B
@job_name = N'IncreaseUserCashJob', -- 作业名称9 z# f$ c! B/ f+ A$ x: p5 i
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
$ i _9 Q( Q+ e4 NGO8 W4 P; d) k9 g& @
" V/ h" ^# e( v+ m1 ?6 B3 u/ B
- P# x4 v6 \. W# R; a, c9 n% Z: h/ k3 F' F9 ]* l
# Y; @: o; e5 i7 ]- D; `7 B
+ p/ A8 F- K0 E4 ?- L |
|