高级会员
- 积分
- 867
- 金钱
- 728
- 贡献
- 62
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次----------------------- W- k* u8 D6 p: C0 R+ A/ p
USE msdb;
7 m3 q6 l" Y/ z& g/ y! W' UGO
4 o( D/ B7 r; @+ L) C% k
* c$ u4 a d( \" z: W4 I-- 如果作业已存在,则先删除它
: N; _3 H6 ^' j& g' g' C$ PIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
0 T& @0 d8 H; R! o- ` EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
9 t1 j/ ^! [9 nGO4 C! l( U7 N/ C3 V. }) S7 K1 F
! ~. R- i7 u3 @6 P. l. O
-- 创建新的作业
! B R* b& r9 V( N& s* g: h tEXEC sp_add_job ! P v7 q- i. V0 f: f+ ^) G
@job_name = N'IncreaseUserCashJob', -- 作业名称
, q* I* D9 F+ E% A- x; _ @enabled = 1, -- 启用作业2 ~6 e* a1 u# i. t: W; [! E
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改* U/ R3 Y. B+ W( z6 K
@notify_level_email = 0, -- 不发送电子邮件通知8 b0 @$ D Q# p- T/ Z9 L
@notify_level_netsend = 0, -- 不发送网络消息通知
8 {! R# f' w7 K( ~! s" B' _ @notify_level_page = 0, -- 不发送寻呼通知
7 O; t9 r. A; n @delete_level = 0, -- 不自动删除作业
8 m. w2 c8 j& N4 F @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述8 a% Z. ^+ k- U9 |8 S% d
@category_name = N'[Uncategorized (Local)]', -- 作业类别
, J+ i$ M* O% i1 W: y+ y @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
! s+ M( Q' ~% I! Z* i' S' W( k% H @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
' x4 k6 Q, U! a/ B2 FGO1 T2 m+ y4 m K% r! q7 o
7 d$ } E) {! J4 q2 B) h! r-- 为作业添加一个步骤" `8 W9 k0 N5 z+ k) S5 v
EXEC sp_add_jobstep
; ]4 y1 H; `. A4 {' b! x, [ @job_name = N'IncreaseUserCashJob', -- 作业名称
8 T) x1 f1 g' {3 \% ~/ p @step_name = N'ExecuteStoredProcedure', -- 步骤名称8 g* n* r9 @; [3 }5 U
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)8 c) ` e( z# x
@database_name = N'account', -- 指定数据库名称2 X& r2 u4 o' `( \6 y
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)' n9 x1 k( s8 f- r
@retry_attempts = 5, -- 重试次数
/ H, |1 F: C2 j% u, ?* t @retry_interval = 5; -- 重试间隔(分钟)
6 W/ {: w" J4 ~ `GO! x& U* @& Z: v3 B+ Q$ O
* t- f" B ^" g% J2 E: n-- 为作业添加一个每分钟执行一次的调度 \2 q" a( n9 {3 j+ ^8 l7 O/ Y. e' V
EXEC sp_add_schedule 6 K9 R- o% d1 N7 p, ^
@schedule_name = N'MinuteSchedule', -- 调度名称
2 y C4 `7 T j( ^( [/ |; q @freq_type = 4, -- 频率类型(4表示每日)
- a9 O; K' S- K( J, b @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
" p1 l5 {7 a( L @freq_subday_type = 4, -- 子日频率类型(4表示分钟) {% T8 I4 v( d, ?* _# E+ l
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
% `1 s7 F9 v( e. b7 ]) O @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
: O- e/ o% }8 n4 V @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
7 Z( \. d. C* Q4 O6 e* K @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)) x- V* I# N/ w' M/ n4 u
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)0 c7 A6 h' W, q5 F
GO' w+ U. E; J" T6 d4 z
1 t7 P/ a& b) R$ b, R6 W* w4 y: Q
-- 将作业与调度关联起来
& U: i W% t1 o5 n$ T- X8 OEXEC sp_attach_schedule . `( P- D) h& r9 ?9 v
@job_name = N'IncreaseUserCashJob', -- 作业名称- q: X$ A; y3 v- d1 W
@schedule_name = N'MinuteSchedule'; -- 调度名称
+ x" b/ O7 [0 L X$ A: uGO
5 d' b* \: i2 ]! n0 E; k& ~! H( b
5 I' e q! n( ^. h-- 提交作业创建到SQL Server Agent
! ^! Y! e; h( A0 Q) X) r2 q$ SEXEC sp_add_jobserver % _; D& M( ?) C2 R" o6 ?$ v
@job_name = N'IncreaseUserCashJob', -- 作业名称8 ]8 k1 k: v; i+ C* J6 r1 ^& \2 b- l. M
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
/ a6 ^3 V+ ]( m8 nGO
4 X& C0 ]6 Y9 `8 @9 M3 S1 t3 k6 ^. f) M# l
5 S+ e: S* T5 p, x, j
+ b' q2 n) J8 v
+ Y, _; e' `5 s5 c! w. e# `# ]
7 T$ y9 Q+ q7 v! y |
|