高级会员
- 积分
- 891
- 金钱
- 742
- 贡献
- 72
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------& H: N: T z) r: K
USE msdb;
6 e. m; b _3 K' K: cGO
3 X6 v7 U& K1 f8 e4 d% P( g# v' \. {. n
-- 如果作业已存在,则先删除它- U, M9 ?) X& W0 P L# Y/ N
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')1 Z3 U6 Y, s0 t+ z
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';+ ?3 V% e* h' Z/ ~9 o
GO" }" L" }/ j# w1 S c! J# Y
# R: S5 V) H! D+ m" |-- 创建新的作业 h, o# i4 K% L: B$ `4 ^( J
EXEC sp_add_job % _5 B9 O. s' |9 L
@job_name = N'IncreaseUserCashJob', -- 作业名称
/ Z9 w8 M# |0 z4 E @enabled = 1, -- 启用作业7 D7 _% c2 x/ H% U$ F, Y
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
5 L( L4 C' k2 y6 \ @notify_level_email = 0, -- 不发送电子邮件通知
( u7 E$ t q6 d& ^5 d/ V& l @notify_level_netsend = 0, -- 不发送网络消息通知
9 |' E( y- Q6 v5 j @notify_level_page = 0, -- 不发送寻呼通知
/ @' D$ n% }; a @delete_level = 0, -- 不自动删除作业) I+ j( ?% F: u+ s9 c
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
9 i7 I/ X- h) `7 d( z& f" R; v; O @category_name = N'[Uncategorized (Local)]', -- 作业类别
$ q% ?- c+ u4 Z( R- S3 `6 k' ^$ t/ H @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
' l% E3 ]# Y! t r9 l @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员# ^7 P0 @- }' k; J
GO: L: Z; E( I1 D# h9 O" s
z- _) S9 Y0 T6 O
-- 为作业添加一个步骤
, H/ @/ }6 j& x: mEXEC sp_add_jobstep % I! _* k/ s2 L
@job_name = N'IncreaseUserCashJob', -- 作业名称+ z! ]/ q7 u5 Q
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
8 y; {# n' W, u9 q @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
4 ?" V2 W6 J' ]! {: r P7 [ @database_name = N'account', -- 指定数据库名称: \& n3 S8 g. C# c# p& u/ R
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
6 a! p6 J6 {4 t, F @retry_attempts = 5, -- 重试次数9 |1 x& V1 ]; H" Q. w; M
@retry_interval = 5; -- 重试间隔(分钟)
, T8 Z: Z d: @1 _7 p* RGO
& \7 r4 {" `$ f c8 N- i3 b/ g: X* z% T! @2 ^$ w. x0 A
-- 为作业添加一个每分钟执行一次的调度
5 }% Z! O* F+ B) fEXEC sp_add_schedule ( O! ^# h( `% N, ]0 L# O
@schedule_name = N'MinuteSchedule', -- 调度名称
( w7 g) ^7 p4 a* U9 g) c @freq_type = 4, -- 频率类型(4表示每日). p- u2 ?0 Q0 x% O+ S Y
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
$ N6 }& V5 N# V1 C N @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
4 v) w2 q9 F3 N3 P W4 f" P9 s @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)) O- g" V7 |) C" O C4 r
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
9 q6 L$ A& d6 t1 Z4 V0 h; ~ @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
5 q5 G% D$ I- H! D8 M( R @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)$ \5 s9 X6 m8 O' `& g3 b7 { @
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
) h* \, J. `5 |6 W3 ]6 }- O0 N9 UGO- G# G3 e' M% g( I* x* }0 I
1 C6 f, w* j3 t" z& `3 l( }
-- 将作业与调度关联起来) Z& D% B {0 ^' @( k' t
EXEC sp_attach_schedule
7 l: a. W4 B: }* l2 @/ [# n" o& a @job_name = N'IncreaseUserCashJob', -- 作业名称
" s, M7 H2 E$ X0 R @schedule_name = N'MinuteSchedule'; -- 调度名称
" J5 q) i1 D5 z0 | wGO
_7 H" |' z+ ^/ Y- J2 t
* { G: g7 M# Q& |- T V5 z-- 提交作业创建到SQL Server Agent
0 z9 i7 _5 _6 wEXEC sp_add_jobserver
; R. Q1 o$ a- D) N N @job_name = N'IncreaseUserCashJob', -- 作业名称9 q4 O) i+ Z9 p4 V0 |' s# v: B% C
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')' | O* r ^* }0 x" s! ]% Y; {& W2 A( X
GO
5 J; t0 Z) Y3 [2 [
6 j. A6 {# U0 i6 H9 z( \1 i/ u+ J+ T1 x1 S% i6 {
" ?% X9 I ]# U. N+ M; e. y9 e& j. I, X+ I
* ]: @4 F# a9 j% R+ I# O- J
|
|