高级会员
- 积分
- 812
- 金钱
- 678
- 贡献
- 57
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
$ l! p; a! X8 V! a5 r& xUSE msdb;
8 v6 |) M! R; o7 g6 r2 q0 J8 YGO; ?: D+ z! q1 x
! M# |) K0 {/ E& K1 r) C& h& Q
-- 如果作业已存在,则先删除它
, u0 m8 s2 f9 q, u( @3 LIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')% W" {) n& ] I/ T7 f! P8 `! O
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
q4 h( h$ k6 {& y3 P& u( EGO
1 G' b- S) M4 U5 d5 ]% f& x$ N& } L) u, Q( g
-- 创建新的作业
6 x% t; a1 ?8 ~7 r1 F7 iEXEC sp_add_job 7 {: f5 |% }- m( I* f
@job_name = N'IncreaseUserCashJob', -- 作业名称
0 W' l. N, l( t$ | @enabled = 1, -- 启用作业
( x4 [1 S. R/ V, l @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改% k1 }( B: } C M' w0 \: q. O8 E& I
@notify_level_email = 0, -- 不发送电子邮件通知" A0 b, G v, I% W) D0 b4 I+ b$ ~: k
@notify_level_netsend = 0, -- 不发送网络消息通知1 |) [- I" \- b* k- s1 T( n
@notify_level_page = 0, -- 不发送寻呼通知' N1 b; P5 k1 n
@delete_level = 0, -- 不自动删除作业( O$ G: @1 @; q0 C
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述) h( D) v8 i$ `) i
@category_name = N'[Uncategorized (Local)]', -- 作业类别# L4 B' q9 f; _
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
5 b% @% p* P, ]# @! p5 E @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
! q$ j; |; b2 X( d0 D/ FGO
, T% c; c; P5 t' W; B+ m( f# Y! k* i( J; a& M# p. @
-- 为作业添加一个步骤+ X7 J& I, O# t
EXEC sp_add_jobstep
- Z: N* G8 ~' G, | @job_name = N'IncreaseUserCashJob', -- 作业名称% ?- T% o7 B1 j; D
@step_name = N'ExecuteStoredProcedure', -- 步骤名称7 V9 ]+ L* O. _; B2 p" `
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
7 r1 V6 w# r3 p8 m) b @database_name = N'account', -- 指定数据库名称2 e' i0 \) O+ @/ ?
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)- }1 i4 ~: {/ H: {5 |
@retry_attempts = 5, -- 重试次数
2 v0 P. T* Z$ D9 |5 \; d @retry_interval = 5; -- 重试间隔(分钟)
, V" N% y0 J" jGO
8 A6 K4 ^+ @: o" ^ M, @. n( N' x' R. `+ W& K
-- 为作业添加一个每分钟执行一次的调度5 y' g& ~6 O- Z7 W2 a4 U- C
EXEC sp_add_schedule 4 {' ?# d" p, S5 M
@schedule_name = N'MinuteSchedule', -- 调度名称0 p0 e6 _" ]) [2 w+ E: {9 u
@freq_type = 4, -- 频率类型(4表示每日)
& D8 x( A- `$ h3 p' I @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
# \0 Y3 R0 v) z6 G1 y/ U: |; `0 o @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
5 t+ G# i8 F1 {5 U @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)5 A& O3 p. e/ g, |
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)- h! O' x$ X) u
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜), S! o8 D% S% p! Y# Z9 M
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
$ e6 Q; Q! j5 t' B0 K5 f @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟): C( c! q% E% \1 X5 ?4 l q
GO
# B' x2 g0 f; _. M3 ^# {+ @8 i
* p1 S/ }- P. x1 I-- 将作业与调度关联起来
2 Q, _# H4 f4 }5 a4 B" b7 t" {EXEC sp_attach_schedule 6 J$ n& A' W# A- t. k
@job_name = N'IncreaseUserCashJob', -- 作业名称
3 D1 }9 k& J1 U5 C @schedule_name = N'MinuteSchedule'; -- 调度名称# w7 V2 w7 E4 g" O
GO: u6 w' m5 o5 @6 i; Y" ~3 C6 y
2 J1 b" W/ l' S6 X-- 提交作业创建到SQL Server Agent
3 s( b) u/ {# \EXEC sp_add_jobserver 1 _0 R, e& L% y+ {
@job_name = N'IncreaseUserCashJob', -- 作业名称
; s6 ]/ s* z) q$ H6 o @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
( O( o3 ?; k9 ?! S: [GO- } G6 C& y# k0 U$ w5 V+ B
- V# ~4 v8 I/ N3 V
2 S m0 h5 y9 n& _4 \ A3 Z# p: @7 z% X* n
4 W- J4 b1 Z% c. z5 h& q4 w9 E* i
; f4 n8 ^% A* n) |7 |; p, x+ y& _
|
|