高级会员
- 积分
- 786
- 金钱
- 654
- 贡献
- 55
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------3 z, E$ ^" R) _6 X; [7 H
USE msdb;
v6 x0 \' R) t! O/ |) nGO @4 `8 d1 i6 f8 h
% ~+ H. M4 K" l% |) m) M9 L-- 如果作业已存在,则先删除它
: \9 r8 A/ d* v2 mIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')' n) m4 S G0 b8 r) K& [, L+ R& J: R9 F
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';: J$ I5 G, X, t9 O* f/ k/ @9 E* g$ E
GO3 V1 L- \9 S& H# U, @ c
+ {5 }1 x& O; x
-- 创建新的作业
, f/ F0 ]# ]( bEXEC sp_add_job
9 j6 }' @9 _ G# L @job_name = N'IncreaseUserCashJob', -- 作业名称# `; U% u. Q* ~+ f0 F- d6 d$ p
@enabled = 1, -- 启用作业
3 j% H! r2 _8 g- w' C! N( U @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
$ Z; r' F. {0 q# ` @notify_level_email = 0, -- 不发送电子邮件通知4 \4 Y! A3 E* ?8 {1 [% B6 o% r
@notify_level_netsend = 0, -- 不发送网络消息通知
' U* s6 P4 [7 o5 m+ \7 p# F& l @notify_level_page = 0, -- 不发送寻呼通知
1 X& v! k8 T& B3 [& z: e @delete_level = 0, -- 不自动删除作业
# h4 d; h( F6 T5 X; w& B _& F/ E& j: ~ @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
9 d9 m, b0 [4 n, M& I* T8 i( { @category_name = N'[Uncategorized (Local)]', -- 作业类别
* Y" @% O3 }7 O3 I- u @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)& d y' s1 r: F; v/ [
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员. T: R, H+ | W4 |4 g
GO
/ A5 I+ |: O( F! q/ Z2 S4 z& W% Q+ F$ A2 i, K
-- 为作业添加一个步骤6 t: O+ c# L- a5 J- f; H
EXEC sp_add_jobstep
3 ?+ h7 N6 ^% W3 ]) X/ y @job_name = N'IncreaseUserCashJob', -- 作业名称
5 y" t* B/ |* E2 ` @step_name = N'ExecuteStoredProcedure', -- 步骤名称
[" h( a$ |3 W% B+ e& y' t+ R1 o+ r) ? @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)$ E5 O/ R% X: }( j/ W
@database_name = N'account', -- 指定数据库名称
5 S" v" u) h6 @" T0 w% r; `& w @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)' g n& X! j7 x
@retry_attempts = 5, -- 重试次数: i0 O3 h% W, v
@retry_interval = 5; -- 重试间隔(分钟)+ ~: ?# k3 ?. V9 Y
GO
' e ]# }- s; c, V$ ^+ e6 d% b# X
1 s! {* K$ P8 V# p! ]-- 为作业添加一个每分钟执行一次的调度
# }1 W" Y/ T4 o( cEXEC sp_add_schedule 0 b' R2 G$ t# C
@schedule_name = N'MinuteSchedule', -- 调度名称
& K2 ~' E K/ T& H% A( C2 o8 B @freq_type = 4, -- 频率类型(4表示每日)0 d* n0 U( D. t) Z& D; N0 P
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
! R+ H0 f% b+ G: R2 K: o2 x @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
* ?2 X- }$ u8 H$ Z+ B @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次). o' c3 U$ C8 O& H6 y- Y0 y: U/ q
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)8 p" t0 a( g$ S2 v9 G
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)1 l6 D6 }* ?3 g3 ?2 P) S
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)4 y) m# y( H; a
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)6 P" n6 w9 }) u8 I& N
GO
. }7 @4 H0 m7 _+ I+ k3 X n
- F: u3 F! G1 g6 I-- 将作业与调度关联起来" U* f- ]3 [; {8 G, Z
EXEC sp_attach_schedule
# m/ O0 L6 n: U% X5 v) `; ^2 c @job_name = N'IncreaseUserCashJob', -- 作业名称
8 Q) s: i" Z- i. n5 T @schedule_name = N'MinuteSchedule'; -- 调度名称: b# X5 n" ]" C+ P! J
GO
@8 L4 B- k, f ^3 l7 U
( M/ E% [& Y# w$ o! @4 X-- 提交作业创建到SQL Server Agent! T! X7 a' R0 x' K( o
EXEC sp_add_jobserver
3 _, D( [: g" Y @job_name = N'IncreaseUserCashJob', -- 作业名称" V% L% H/ `5 ?
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')+ {0 V0 J" u: j; X+ V( l8 B3 i3 w
GO$ n& r% w& @6 A# Z
( J/ X" ^- u6 K' Q3 Z/ m. ^" g: l; N. h% O1 l
9 h* q6 N7 P( E* t3 u
' {7 e+ h. T9 o/ Q1 H# u$ P* x
: \& N' t4 e# H' \
|
|