高级会员
- 积分
- 812
- 金钱
- 678
- 贡献
- 57
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------" i5 l; e; m7 c: ^6 K' o! h
USE msdb;
% v3 [; ~9 j) N0 @1 R& X7 ^+ GGO5 j4 c& M5 a; t# ^3 V% H
, O7 M+ H/ b. `; |3 z/ I% r
-- 如果作业已存在,则先删除它4 T2 n7 w; _, h9 X2 C
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')+ o6 d* f. p1 q6 F
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';* s3 C8 u' x, \) p9 B- X. o
GO) W. |: d1 `) @; ^0 @3 e9 E
9 j4 Y* d& @7 S& c# B-- 创建新的作业
1 ~/ H5 t: z5 m9 q& f; W8 M1 VEXEC sp_add_job % P5 h9 W2 W5 U6 T1 M- g6 y
@job_name = N'IncreaseUserCashJob', -- 作业名称
3 f* C5 D* K x @enabled = 1, -- 启用作业5 @0 \+ F6 z" G
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
) w. H+ p& j) d4 Q' U @notify_level_email = 0, -- 不发送电子邮件通知4 D u- ~5 f4 d; j
@notify_level_netsend = 0, -- 不发送网络消息通知
& ]/ q, q. M2 m @notify_level_page = 0, -- 不发送寻呼通知; @, j5 q# T. \, W- D/ |" Z
@delete_level = 0, -- 不自动删除作业
8 B s. v7 m8 s. S @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述 w! @$ o) ?# M
@category_name = N'[Uncategorized (Local)]', -- 作业类别
( R, z. h7 t6 y" r1 _ @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)) I. ~; a% {7 O, K1 @* W/ I
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
. ~! D9 M5 E: y2 [: ]* E7 `GO' k( ?9 ^3 b- g# {. f( G
8 a# i, D) F9 r
-- 为作业添加一个步骤
- V1 X6 s5 i% P. N9 p, ]EXEC sp_add_jobstep
8 b& e4 Z! {0 s, b7 \* _ @job_name = N'IncreaseUserCashJob', -- 作业名称
6 e I6 `3 x2 P# b @step_name = N'ExecuteStoredProcedure', -- 步骤名称
: U9 i& }8 {! v1 V! d7 E/ i! ~$ c @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
& Q5 D! e' `2 a: P @database_name = N'account', -- 指定数据库名称! K4 l$ K+ f& i9 r
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
+ r$ u8 j+ x1 C( l! O* F& c7 e! d @retry_attempts = 5, -- 重试次数
6 L; |8 w0 c3 @5 \ @retry_interval = 5; -- 重试间隔(分钟)
+ m$ Q1 O* q* r* N3 B3 P7 L6 F9 R8 EGO8 d: H: u, C* k, D
" o: F* C/ i. Q6 V3 Z-- 为作业添加一个每分钟执行一次的调度: a8 F% K0 t8 ]# K# A+ K5 ?- z
EXEC sp_add_schedule
+ v2 Q7 t# S( E0 X: ^ @schedule_name = N'MinuteSchedule', -- 调度名称2 l. D' ~, g- s) H3 A' M
@freq_type = 4, -- 频率类型(4表示每日)0 F6 s* N( g( Q3 m) ` N: r
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
4 ?' ]9 Z6 r1 J) w. ]" H+ | @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
7 Q& E5 l/ A) u6 l! ` @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)' U: ?6 C) e. u. K9 G
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
P# z4 e0 l% T3 O @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
$ M/ J3 {/ H0 ?* K9 Z6 x% K% u2 r @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)1 X' P5 |# Y4 @% A
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)- o* A& l2 _0 x X$ q
GO
8 V1 r2 v2 h- c W# Q) d- M$ y9 f- t7 T( f* V* U/ F5 V
-- 将作业与调度关联起来: H. y$ Y6 Y7 s, P- {: y0 N
EXEC sp_attach_schedule ) A# p# r. q4 \) r1 `$ {
@job_name = N'IncreaseUserCashJob', -- 作业名称
6 X* ^ z1 Q# k9 t S, d. ^" L @schedule_name = N'MinuteSchedule'; -- 调度名称$ S' W8 i7 v) @( D
GO# C3 g, U( Z5 K2 Z9 m( V
' B2 d- h7 T8 Y& Y
-- 提交作业创建到SQL Server Agent
% D2 I" Q. B. D* A- b# xEXEC sp_add_jobserver
7 o$ z8 }+ w' G @job_name = N'IncreaseUserCashJob', -- 作业名称# j* N: g+ g1 V% K: |- S9 j
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
2 _/ S t" v `GO+ {6 D! B3 W/ S" T4 X, u A$ N
+ z; ?7 g1 m- D- R/ m
7 a; X, o" F: s& Q, B0 p
6 g n- O; l9 @- C5 n+ ]: ?5 S* v+ M# ` p5 f+ h
- y8 t( j: s& n
|
|