高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
: t- s R( [" d! V" g7 w. Y9 R8 eUSE msdb;
3 i! L: C, i. e$ h; n5 o5 M. ~GO
1 e) V9 j, s0 v+ A: t8 F S4 J6 u) v
-- 如果作业已存在,则先删除它 T% \9 }& b$ `& x2 |! M) v4 g
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
0 Z2 i' t. D2 D) ?: a$ l EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';9 g( v9 E5 s! \9 k1 A) t
GO
& Y, {, W* f9 t* W; z* K( y) n0 Q9 [
-- 创建新的作业$ u: d8 i! A2 S& c+ z) L
EXEC sp_add_job
1 ^; T* M, A; C! A @job_name = N'IncreaseUserCashJob', -- 作业名称
* x* d* U' w/ k8 U' K% i8 k @enabled = 1, -- 启用作业: h! z- x3 \! N. y7 m% \( P
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
6 f6 {) A4 k& x& V8 U5 y @notify_level_email = 0, -- 不发送电子邮件通知
7 a0 ?) O& R) n9 d( q2 H @notify_level_netsend = 0, -- 不发送网络消息通知
4 s# J( ?2 W6 j0 ? @notify_level_page = 0, -- 不发送寻呼通知
1 n( v4 g/ D) f6 E" Y) w* ` @delete_level = 0, -- 不自动删除作业
0 P; z9 w( U' R Z @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
- c& n$ ]+ S3 _ @category_name = N'[Uncategorized (Local)]', -- 作业类别 R; a6 P& J4 M
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)- S+ C9 Z4 e: \* T) ]3 m* ]- u
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
# g2 g& g; z5 KGO
" Z1 m" k# l( i( p* a2 B& [% n% z5 ]# j
-- 为作业添加一个步骤
5 O3 m0 U% {9 O1 w- XEXEC sp_add_jobstep
3 C9 b& v; |) h% @& d @job_name = N'IncreaseUserCashJob', -- 作业名称
: \. z5 n* _6 X7 w3 M: S; \ @step_name = N'ExecuteStoredProcedure', -- 步骤名称% A5 d2 k- N* p F5 T
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)3 s. Z1 [. d: x% }6 p2 o! \, n9 Y# }$ Q
@database_name = N'account', -- 指定数据库名称
. m" y& V O4 f @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)( T4 P# ~" g6 e
@retry_attempts = 5, -- 重试次数
( E: M) ?/ [$ S( o; A @retry_interval = 5; -- 重试间隔(分钟)0 o8 x6 F/ B7 G/ @0 Z3 k W) _
GO- |( `6 a8 G7 O
* b; p: S1 b( ?
-- 为作业添加一个每分钟执行一次的调度8 I% l& Y+ N" n/ s4 k
EXEC sp_add_schedule - E' W+ J( Y! U T! X
@schedule_name = N'MinuteSchedule', -- 调度名称
. R( L& \! u; V2 G" Y9 Y @freq_type = 4, -- 频率类型(4表示每日)
# B/ B; q$ z0 s- t @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
4 |( s8 O' i- T3 M- x0 C% G8 i: s1 Y @freq_subday_type = 4, -- 子日频率类型(4表示分钟)5 ^' S% [' F3 w+ T: S' n
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)9 G9 N4 U1 A5 H6 _
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD) B9 l( T1 k0 z; K# A
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
7 }6 ]5 j3 j8 ^9 }& n; J @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)8 J9 E9 i. v* c& ]
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
$ O* R" p. @- H( PGO4 S7 g7 @$ k2 w/ @7 p, J( h# F3 ~
, x# b. Q9 n+ M) \* E& |-- 将作业与调度关联起来
6 m5 c/ L7 u. A* _& m: h$ SEXEC sp_attach_schedule ! Z# X9 `# J+ ]5 X" N
@job_name = N'IncreaseUserCashJob', -- 作业名称$ l5 B8 C5 _0 C E1 H p) {* m4 E( P
@schedule_name = N'MinuteSchedule'; -- 调度名称
. m, p1 A# y4 v' D I6 h3 dGO( D' F! m3 b) R
2 _+ r) D& I6 S! Y3 |-- 提交作业创建到SQL Server Agent
8 _. L% y- `0 \EXEC sp_add_jobserver - u- C! q. T1 a+ F ]) p
@job_name = N'IncreaseUserCashJob', -- 作业名称
) h' `- p O _' \) S8 p; `& a @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')1 k0 M3 F- n9 J* O0 c5 [* A$ X) u
GO
5 J7 `( U4 V6 A
( |) m. x v2 x5 U a3 C; y( d& ~& l$ n [3 ?/ X) I" c2 ]
9 d! k3 A/ Q( g5 i% P! g6 J3 m4 P. E' l" Z T# i+ o
}0 r1 D v( @4 [: J |
|