高级会员
- 积分
- 744
- 金钱
- 613
- 贡献
- 55
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------# m" c& T1 I1 B3 {- l
USE msdb;9 U: }5 F: Y- w
GO
( d' g; X: Z- |. C. }; t( S% Q" Q8 @. O/ G0 h/ k- l% Z# U' E
-- 如果作业已存在,则先删除它
% L" y7 Q3 t3 j5 k6 K- JIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
/ N! h v9 F: P4 Z EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
. C1 @; c( x; }) s4 K9 d) ?) }GO; Q% G5 k& |6 h9 `
. ]: V# A, u# [* U7 t/ e9 z, f2 M$ C
-- 创建新的作业
/ T% M3 @* R6 O. @EXEC sp_add_job " r f6 _) I7 @/ }1 j9 \: U
@job_name = N'IncreaseUserCashJob', -- 作业名称
+ p3 G5 F7 l+ T( M t; q @enabled = 1, -- 启用作业# G; j- T2 [8 t+ j3 K6 d0 z
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改, v4 j G) w& D. `$ s, j
@notify_level_email = 0, -- 不发送电子邮件通知
$ j3 U8 ^ b* t4 s8 |2 `% } @notify_level_netsend = 0, -- 不发送网络消息通知# {8 S& K, M- g5 h6 }
@notify_level_page = 0, -- 不发送寻呼通知
+ X: Y2 Z* Y* A; {" Y5 M x @delete_level = 0, -- 不自动删除作业
) d! {1 S) [" _ @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
5 d) P: z9 b2 w' e/ y4 h1 m9 R @category_name = N'[Uncategorized (Local)]', -- 作业类别, c5 S. g4 G0 k* L' Z: z) ^
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名): C% k7 d Q- }. S/ V: I8 m6 [% L
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
3 }, F! C: i% a) h: W% Z+ YGO$ u" |5 |9 r9 E( ^
( ^' L# B1 W0 T; s% r: `$ n-- 为作业添加一个步骤: z9 W" D& G4 @6 x
EXEC sp_add_jobstep
, y, ?9 B& I6 A7 x, Q! J @job_name = N'IncreaseUserCashJob', -- 作业名称& J4 ~' ~/ y% _( ~
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
) L; }4 d1 @( k. E2 p% r2 R9 }9 l @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)3 O* q8 V1 u+ A
@database_name = N'account', -- 指定数据库名称
. N7 X9 u& f S' f @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)# ?. j$ o( z- B2 @+ v
@retry_attempts = 5, -- 重试次数
% p0 ?" n' V' F7 A @retry_interval = 5; -- 重试间隔(分钟)
+ A% v* r k) S. i6 R0 l5 pGO
6 }: C- f2 K' J8 l8 m* `/ u+ E4 Y6 R& ^3 _& c( l
-- 为作业添加一个每分钟执行一次的调度
/ U7 C; Y- K5 i! c+ _4 Z" EEXEC sp_add_schedule 4 G8 C! U3 E) s. b" O% }* ?1 o
@schedule_name = N'MinuteSchedule', -- 调度名称9 R! v/ o* J4 P# O
@freq_type = 4, -- 频率类型(4表示每日)
1 d% A) V/ j! A+ H/ E @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
$ R5 K& {+ |5 b3 @+ _9 ~ @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
/ S/ D5 B: J s8 `/ o# E7 k- ? @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
! h7 b" n1 Z- L2 ^+ V6 R6 |; P @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
; o' q3 K D/ E8 C @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)# A/ T& _+ Y3 P$ R$ A2 `, c/ w
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)3 N B0 L0 ^2 w; T5 \+ ]
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
" j8 o( n* k5 m- t+ FGO8 U( ]5 z3 M! C' s7 ~8 ~
* e; f! @# ^- X l
-- 将作业与调度关联起来
( L! p4 q' g. P6 Y' [, k4 HEXEC sp_attach_schedule 6 q. T( o# U; [! o" |5 \
@job_name = N'IncreaseUserCashJob', -- 作业名称
5 ~7 i/ k, ?% G, W. i @schedule_name = N'MinuteSchedule'; -- 调度名称: g: G0 ^* s+ b$ _
GO" _$ j( ]0 u5 O9 b l2 K
/ }* s" u! z6 i-- 提交作业创建到SQL Server Agent8 D/ z9 ~; ]3 K5 `# x$ ^
EXEC sp_add_jobserver # @# M3 q7 y/ N4 n+ j0 P- R6 _
@job_name = N'IncreaseUserCashJob', -- 作业名称5 L5 ?0 N4 b0 l
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
$ \4 W2 ~8 d6 h$ d3 q) ?# a" ~GO( r( u A5 i/ r4 Y, m+ P9 `0 _7 @
6 q& ]6 H( j9 K0 V. T) h
. y# t( W5 r; U% | R
! k* D5 U# w/ |/ i9 i* |+ C: r; P" n. ~5 n
. f/ k& J. Z) z
|
|