高级会员
- 积分
- 867
- 金钱
- 728
- 贡献
- 62
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
" E. o) j. c/ E( }- JUSE msdb;% `' x$ M# M, ?8 d- W3 }! Q6 r
GO
: i' y1 q/ d/ n* K# u# d" W3 E
, j# d- m* o7 g0 g* y-- 如果作业已存在,则先删除它
) {5 l3 n) l0 n2 y" @ f- H; JIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')( n( K4 l/ w, S2 ?
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';+ K0 ^' v5 V. V& |0 p. [
GO
5 q4 D! d# |0 T0 O+ c4 @6 J' u9 ^
+ m+ @$ ~, N. y$ O+ H7 U D-- 创建新的作业: L; h# H; t) ^
EXEC sp_add_job
% @2 f; R7 L; D Y3 K- v C) g @job_name = N'IncreaseUserCashJob', -- 作业名称
0 L9 W: p9 z, }7 R4 v+ p7 @ @enabled = 1, -- 启用作业9 P" R) |$ a% @# h6 q8 n$ ^
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改# q+ I1 m2 i4 e h D, M9 {( h
@notify_level_email = 0, -- 不发送电子邮件通知# q0 k N4 W& }: C8 ]& z$ Y/ N
@notify_level_netsend = 0, -- 不发送网络消息通知
% c7 }2 @4 v. m. X @notify_level_page = 0, -- 不发送寻呼通知 ?6 v9 z; Q& }& k
@delete_level = 0, -- 不自动删除作业
, H7 v7 b$ B, F# S4 o" S/ W6 X @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述+ O: l G: |; X9 \9 u- o+ b
@category_name = N'[Uncategorized (Local)]', -- 作业类别4 k# o+ H9 L: j+ r. S
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)4 q2 y D! c2 h5 w
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
+ C: X4 R( ~6 x4 aGO2 @4 V: ^9 e$ X& s4 t" l; I; e
& Z+ [0 ^0 j+ k3 d- T-- 为作业添加一个步骤
; Z+ R0 e) F) HEXEC sp_add_jobstep
3 m# v3 k6 H6 h0 q* q% H @job_name = N'IncreaseUserCashJob', -- 作业名称
' F- k" z7 s( Y! j( p @step_name = N'ExecuteStoredProcedure', -- 步骤名称
7 W O' r5 C' c0 m. x; G; w @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
% J5 n9 ]# A) Q2 g @database_name = N'account', -- 指定数据库名称# G9 u9 b( l) {4 w. a; D
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
# C+ O! q- X9 x @retry_attempts = 5, -- 重试次数
9 E7 i& v4 C1 _3 L; F0 d4 u5 k @retry_interval = 5; -- 重试间隔(分钟)- ^2 Z/ D3 E k
GO8 d7 z b U# x$ Y/ D
2 D, a! B+ q. L% Q- S. b
-- 为作业添加一个每分钟执行一次的调度. j( M1 h* {2 Y K
EXEC sp_add_schedule + `& f% i& E. B9 A/ \
@schedule_name = N'MinuteSchedule', -- 调度名称% T' A( t. [: a# s5 L3 z0 z8 B: e
@freq_type = 4, -- 频率类型(4表示每日); A6 K# |* c! h' Z- m& f( t# m7 N
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行 V0 y; x9 H0 R8 Q4 Y6 `+ O
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
0 C \8 q* k! v+ V# c# @ @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
" n: o; U2 m9 e$ R @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
# Y0 `" d- M! a* S+ }/ q @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
- u( v4 g: z: v5 R8 [ @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)7 l) I& S9 |3 C6 Q3 k. W
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
( h& F* Q4 m$ a n( MGO
8 M0 Z/ g1 z0 `6 O3 ~- \3 `, z
9 m9 A6 m6 e, e8 _- i-- 将作业与调度关联起来) V) [$ ~6 N/ B6 n. K4 G2 F
EXEC sp_attach_schedule 6 U2 S2 e; `3 E3 g- @6 Q
@job_name = N'IncreaseUserCashJob', -- 作业名称' P8 |1 E! v, _; ~; y4 ] z
@schedule_name = N'MinuteSchedule'; -- 调度名称0 s8 B) }2 a$ ?3 c2 Y
GO
j5 r- y+ x! P e
4 |: k& i" L+ F' n-- 提交作业创建到SQL Server Agent0 N9 g0 k. E$ N- U
EXEC sp_add_jobserver
1 j3 r, V8 X, c, t1 b% B @job_name = N'IncreaseUserCashJob', -- 作业名称: r2 X4 \' b1 |) y1 _3 j
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')4 b, ]0 N# }" ?4 q3 g; m
GO' T: E7 W$ S3 ]) a" V$ ~
1 C' f4 y) P) W- A7 U2 ]9 h, f# p, \7 D3 y& D; W) r2 Y: j+ J
) O+ [3 _, F4 ~6 z- K2 [; E$ H, S( m4 @
4 U. }) k: b4 b2 c; z& F |
|