高级会员
- 积分
- 812
- 金钱
- 678
- 贡献
- 57
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------* K4 g! [8 S2 D' n* b
USE msdb;& g* T* u! _6 ?
GO! S/ y$ ~& O$ i
" |! {7 L, G D& E- ?2 c `
-- 如果作业已存在,则先删除它
* o0 }3 F9 o+ Q# i9 RIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
$ L/ @" Y; G9 E; i. N EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
0 y3 }2 N$ c9 n/ z' \/ JGO
: ?: l( t8 z4 z( J# e# |' O
% N& X3 r+ r8 ~) x-- 创建新的作业2 b4 o/ E* R9 O, ~ N. [0 g. y
EXEC sp_add_job 2 ?9 O0 z, c, }
@job_name = N'IncreaseUserCashJob', -- 作业名称1 `% J2 n; N W+ o
@enabled = 1, -- 启用作业6 d8 s. W9 B$ d
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改7 h7 O b- h' n# `% W/ L8 ~2 f! y& s
@notify_level_email = 0, -- 不发送电子邮件通知
" n$ x+ K* Q) k' `' p( [" y @notify_level_netsend = 0, -- 不发送网络消息通知: s! T& ~+ F& c" e3 W( Y
@notify_level_page = 0, -- 不发送寻呼通知
' l) b% G6 p8 d" J6 Z4 Q( p @delete_level = 0, -- 不自动删除作业' ]) ~8 ^, ~6 X6 z' ?
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
o+ E. I0 L) J @category_name = N'[Uncategorized (Local)]', -- 作业类别
( P$ X1 z( m {. Z F- i/ i @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
+ g0 T3 {* G; C. w2 i @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
8 ~3 K* g& E1 d' J% cGO, I, U- [; S& [) A8 h: Z4 B! r
# s N; U* x5 a5 A" e
-- 为作业添加一个步骤
) ?9 G% S2 j% zEXEC sp_add_jobstep 5 J2 V5 }+ M' h) Z2 ]( u$ x' m
@job_name = N'IncreaseUserCashJob', -- 作业名称- Z3 ~6 a8 f( l- a
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
9 A4 d" }2 c" ? Y% s @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)! U0 @( P# M9 |7 W- j3 H
@database_name = N'account', -- 指定数据库名称6 w+ R, l5 Q9 D- k# p- n$ n5 _
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)6 c0 [8 I$ r$ ?' m* v
@retry_attempts = 5, -- 重试次数+ ?6 O0 }7 Z5 U" o! V
@retry_interval = 5; -- 重试间隔(分钟)/ O0 U& O# [6 U3 u$ O6 p* X- T
GO$ n3 l4 H$ {. W' x6 E
/ S; C9 s3 B1 o @% s/ ~
-- 为作业添加一个每分钟执行一次的调度1 V4 }. ~- C" b: P" T& I& C5 {
EXEC sp_add_schedule
n$ }! }, f8 Z9 \ @schedule_name = N'MinuteSchedule', -- 调度名称
' {2 i8 C( \4 ]2 A0 c @freq_type = 4, -- 频率类型(4表示每日) E: i5 ~% `; n
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行% h+ G% B+ [4 O7 S
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
5 @) {5 r# I: ?3 }$ R, t @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
: O9 f% N* q. H) a- s @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)' B2 J' n# R" I% c+ N# e
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
7 b E4 l9 `* m5 q @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)2 o/ B B% _1 L/ S% i
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)$ c1 B8 }; I: y Q d, X
GO
2 Q1 J; M) D% ]+ ~; p& b4 q
- Z7 e; S# h, L& _& U. T1 f" P-- 将作业与调度关联起来
. G5 Z! i) }5 @5 GEXEC sp_attach_schedule
2 _8 m, ]- U. y% R @job_name = N'IncreaseUserCashJob', -- 作业名称
9 g5 x- q( e z) Q @schedule_name = N'MinuteSchedule'; -- 调度名称( ?) B1 i, A5 o/ w1 t0 |1 b Q
GO
) a4 d0 v7 p) } t7 b( }3 Y0 }) e1 A+ V# L% @1 K
-- 提交作业创建到SQL Server Agent4 ^3 l( b1 a6 p; ~% o
EXEC sp_add_jobserver - q8 ~1 b v' N" l+ Z K8 _/ y0 m
@job_name = N'IncreaseUserCashJob', -- 作业名称
( @* Q3 x; h4 b @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
4 Q) [9 v7 d# J# ?8 mGO
N8 w# Z& n# r' V: r [! W
9 M' w) Y% u* R- k# W" h' s7 p# v6 `' M, Q& o/ H! }
& F( m' |# o8 U6 ^
* m8 s- C. e; O4 u3 ~; s
1 Y. ]3 p7 U9 z+ I" l' w2 t
|
|