中级会员
- 积分
- 533
- 金钱
- 423
- 贡献
- 36
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------5 Q% U8 m6 r7 I
USE msdb;
?" Q2 U# N8 g7 `: GGO, ]" t* f$ ^2 {& f
0 w" ]& H) K% V. \# W
-- 如果作业已存在,则先删除它
8 O9 o% `" L( C4 P$ dIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
7 c- o/ r* Q) `+ R+ O EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
! s g7 p6 p) b- {% u+ UGO( [8 y2 S, d# m- E& l, ]3 E$ Z
8 y! B% a; h* a) F3 D-- 创建新的作业
1 `9 r* k6 g, l0 V2 @3 A% E5 ?0 NEXEC sp_add_job
0 N1 {3 K/ d% I/ O @job_name = N'IncreaseUserCashJob', -- 作业名称
+ Q2 Y7 Z+ A6 E+ {7 J1 J4 x" w @enabled = 1, -- 启用作业% P3 J t. k1 E5 C, ~
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
# Z) N( g& c5 {+ {2 G* F- ^ G/ a @notify_level_email = 0, -- 不发送电子邮件通知) B% D! t5 `5 e1 z% h: Q, O. @ \
@notify_level_netsend = 0, -- 不发送网络消息通知1 L8 y% O, D' Q' V" h7 [5 i
@notify_level_page = 0, -- 不发送寻呼通知
* z/ L# H1 z/ t6 \7 c5 D4 P) a @delete_level = 0, -- 不自动删除作业
. f0 W5 }$ R6 i { @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
) M6 a# X& m6 E. A6 T6 S7 O4 a @category_name = N'[Uncategorized (Local)]', -- 作业类别
. u7 x- {$ |) o @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
5 V8 s; b6 `% |* N @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员+ @! O( H _. R K8 ^9 N$ P& T
GO
& i/ g2 ] H+ x- b7 r k2 b& \8 ~% n. D! u) ~: G
-- 为作业添加一个步骤
: x" b( v8 K% ~EXEC sp_add_jobstep
# {' g( Q! A6 x- r9 p( C/ s) K' B @job_name = N'IncreaseUserCashJob', -- 作业名称3 q$ V& v( v. g; {* g" H e
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
. H' g/ z# S/ H) ^ | @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
* j4 r, c/ u5 R! P6 q4 [: f @database_name = N'account', -- 指定数据库名称) [( ~ q+ Y$ y+ p. B# s# y: F$ `
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
" u7 d: M0 r* H. ^) @ @retry_attempts = 5, -- 重试次数. ?7 t. `4 Q1 [+ t
@retry_interval = 5; -- 重试间隔(分钟)' c1 G9 M: w( b# E
GO$ ?3 @: w# B c. ?. P
9 @, V0 L$ S- O; x5 m
-- 为作业添加一个每分钟执行一次的调度: n8 R9 }5 N7 d: g1 r
EXEC sp_add_schedule
0 R* C) E0 c) J) O' o' U$ s @schedule_name = N'MinuteSchedule', -- 调度名称- F; j6 h0 z8 ]2 [% E3 p7 _, t
@freq_type = 4, -- 频率类型(4表示每日)
& {8 B( d: s# f/ T; ~' V+ c @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行: U' i% t- J3 T/ |, b% l+ H
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)* S. ^% O* x. ~. ?" L3 r
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)7 Q' E/ m0 r& m7 T( c
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)- F6 v% y. }7 S$ h( h" a
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)0 H0 a: Z- T+ G
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)( i: i. E* q* A& A4 X( |! h
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
. K3 x1 _. G9 F2 U- _GO
" n; q7 }2 x- J R/ s+ a/ k. n
- I4 ~& c$ q6 W/ i( }" h* }-- 将作业与调度关联起来! I: y7 ^' o! Z3 d* c( W
EXEC sp_attach_schedule ) G: w5 ~* m8 O
@job_name = N'IncreaseUserCashJob', -- 作业名称
[+ W) e5 n+ S5 A @schedule_name = N'MinuteSchedule'; -- 调度名称4 u3 m* K* |% b$ V* ?- [5 g
GO
0 c* r) h+ t8 w& Z; h! S6 G
, X) o9 L2 c( m/ r-- 提交作业创建到SQL Server Agent9 S* x7 x& a. F: d8 Z! s% W
EXEC sp_add_jobserver 1 i7 m) c6 Y4 Q
@job_name = N'IncreaseUserCashJob', -- 作业名称$ U+ r; t$ D5 n9 c* b/ n0 R& v
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
6 ~6 M' M4 j6 Z' aGO
( b3 A! ~6 h- r" I8 j7 ?# Q) T0 V6 P) ^& q
# K7 l" v/ {9 c; [" G
5 j3 K7 u; H) l. G+ T( @2 x' U
" S# W" q, F2 O1 [4 I6 X# P$ q9 E8 O$ o
|
|