高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
6 U; E. A8 K% N4 M3 M( PUSE msdb;
- P3 u% D7 ?' v5 D: M6 jGO6 w% W" x. b3 H2 W
' w) B4 P# y9 f7 m2 a-- 如果作业已存在,则先删除它+ R+ e2 n% f9 M. d* R' E8 c/ W
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')5 w7 C5 V2 H/ ]7 o( s4 J& `# Q
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';' \9 I. z7 a/ r& C
GO0 ^- i; i) y9 U6 g7 I
& c8 h! e }% K- i% p-- 创建新的作业
4 i7 Z8 D- ]4 d6 m7 X+ t. h' kEXEC sp_add_job
1 e/ @. ^6 P) f @job_name = N'IncreaseUserCashJob', -- 作业名称
) R/ Q1 N, g3 T' g @enabled = 1, -- 启用作业: B5 ]! D8 Q' h" t" K
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
, R5 \/ _8 `' S @notify_level_email = 0, -- 不发送电子邮件通知4 y: J9 U' L3 d( y; g2 P- h
@notify_level_netsend = 0, -- 不发送网络消息通知. ]' M: \" P- X4 I, ?
@notify_level_page = 0, -- 不发送寻呼通知5 t( d" A* {% R7 t; q2 `5 J& u
@delete_level = 0, -- 不自动删除作业& n' r* z6 K, a
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述/ S+ q; M* p, `5 x9 Y
@category_name = N'[Uncategorized (Local)]', -- 作业类别" s$ \8 }9 i! P! b, K
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)# N4 D8 J( E, h9 M
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员' k3 l2 Y1 g+ H$ W9 G
GO
. J' v. ?. o+ a2 E" b2 b* ^
8 J8 f! o4 U. S% l. j-- 为作业添加一个步骤/ L" X. _7 n% o/ _( j" l0 K
EXEC sp_add_jobstep 9 \" `# ?" c* p" @3 j7 i+ N% ?! _
@job_name = N'IncreaseUserCashJob', -- 作业名称
* F% H7 G9 O$ p8 ] @step_name = N'ExecuteStoredProcedure', -- 步骤名称
8 ?7 y6 J; m$ u9 K' b @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)& Y2 g L- z* g6 n3 W/ Z
@database_name = N'account', -- 指定数据库名称+ C4 c, c; X/ q9 l$ {
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
# B4 ?3 h" g. e* _9 P: c v0 ^ @retry_attempts = 5, -- 重试次数
' f! f3 d. a7 O @retry_interval = 5; -- 重试间隔(分钟)& o1 n2 M2 l$ V) L, ?$ q, o' V
GO y0 l; t2 i% M' }: |" ]
& F! H5 w( \7 j
-- 为作业添加一个每分钟执行一次的调度
: \7 @- v* q6 @; l4 ]EXEC sp_add_schedule : s8 @/ h; d' s) t. t$ P
@schedule_name = N'MinuteSchedule', -- 调度名称
0 ^; r" F* Z* T3 ] @freq_type = 4, -- 频率类型(4表示每日)( D8 S: H) F( q+ Z7 w! K
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
2 l. g7 M' K; \3 O1 {- |2 P @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
; U6 b0 S* f6 i @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)" W2 \6 t( j. [; z
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
/ `4 Z4 c1 `9 J @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜): ?' P& t v( m% B% z _- E
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)# q. L% j7 {& J7 g
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
7 b+ q( e. @: r, D7 N! @) I" x7 f4 T8 ZGO
' W+ d$ i! T9 o$ U- f1 _) _$ u, }: h# s q. k7 v& N
-- 将作业与调度关联起来
" A/ r: l0 }8 R% I0 j5 q$ ZEXEC sp_attach_schedule 8 V7 t. C* }! i( c( |! u7 M% A
@job_name = N'IncreaseUserCashJob', -- 作业名称$ s$ ?$ Q1 x# x1 P# F
@schedule_name = N'MinuteSchedule'; -- 调度名称8 w! \$ @$ w5 a0 z, @2 M6 R0 y* K, c+ q
GO8 k* n& g! r$ {3 F% M# b
3 \% r7 }: J! O: n7 m+ h$ K# F-- 提交作业创建到SQL Server Agent7 Z+ @% E7 i* n+ S; |
EXEC sp_add_jobserver
9 u5 M9 h5 }) P" k! n$ m @job_name = N'IncreaseUserCashJob', -- 作业名称
8 d4 w/ F) g0 f8 y% v, ~ @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')5 h1 |- e, h: g
GO/ i! U+ [2 `8 H+ j
. l' p( l$ |3 ^9 H% c" z3 A! Q& B' N& _
8 t/ b7 @ T/ l" {+ t, v5 `" ^& ]+ _) n" }6 M8 e. m" l1 q
0 K8 {8 O# g+ M1 y) ] |
|