高级会员
- 积分
- 838
- 金钱
- 702
- 贡献
- 59
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------7 ^% v2 f' H; s, O5 r
USE msdb;5 }0 ` V+ r- k8 \& r$ `
GO
# q4 ?" V# T' @. _; t
5 q/ y$ Z3 L/ j$ ]! X' Q-- 如果作业已存在,则先删除它, ]3 y; G' o% d) C
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')! L. B7 n3 l/ e3 ^: }9 ?
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';) H1 ~5 x, z- } |! | l8 t8 J
GO8 _6 i7 l( Z6 o: {- W' M: x
- k- X2 m1 A: l-- 创建新的作业. _6 j6 H7 M& s, w' f ~& U0 W8 L: C
EXEC sp_add_job * k: w; K$ n8 R+ e( G! h4 p* P
@job_name = N'IncreaseUserCashJob', -- 作业名称
X R$ v0 o4 j; s+ A; } @enabled = 1, -- 启用作业" c* M" }, U* a8 _+ C( g
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改% M5 \. W& S" @$ \4 J
@notify_level_email = 0, -- 不发送电子邮件通知2 Q% h! H \& u: S5 q7 C. o( g
@notify_level_netsend = 0, -- 不发送网络消息通知0 U6 U5 F+ s2 v
@notify_level_page = 0, -- 不发送寻呼通知
4 x7 I5 _/ ?) O- K% V/ k; {, h @delete_level = 0, -- 不自动删除作业9 r7 e+ {0 Q+ o) C) {$ V
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述: j, L7 F) J& h8 G) K. \
@category_name = N'[Uncategorized (Local)]', -- 作业类别
$ ~4 O. {! q# \% z% V) l% f; X @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)+ P7 `; @) `, n+ B) x
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
+ j9 [0 d/ R" y! UGO* h8 ~- N( v& }" J
, \. b9 J5 o& S% N1 Z: s4 ?# A-- 为作业添加一个步骤1 X% Q( @: m- F3 x& ~; H) x2 G( q
EXEC sp_add_jobstep 6 J# I { u/ v7 v. [" j4 Q" T% @8 J
@job_name = N'IncreaseUserCashJob', -- 作业名称; K0 C' n9 y5 c
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
, w5 ^8 ^# t7 \3 l; G: x& c @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
6 K) H9 f/ Y2 v, c9 U/ l8 F: L @database_name = N'account', -- 指定数据库名称* Z0 H: _/ T2 D: e" X5 C' M
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程). [8 q( Y1 H9 ~2 @( r
@retry_attempts = 5, -- 重试次数
& y% r6 s% \8 O1 I9 U @retry_interval = 5; -- 重试间隔(分钟)0 j7 b! p# q" f# s8 r
GO
* `* O, b. F5 h5 K& ~! b; {: @9 D. u$ ~; F
-- 为作业添加一个每分钟执行一次的调度
[. Z! Z/ B+ EEXEC sp_add_schedule
2 u' q5 J! D& u @schedule_name = N'MinuteSchedule', -- 调度名称& `! G) e) w( [' N1 Q
@freq_type = 4, -- 频率类型(4表示每日)5 |, @, @0 [8 a; H; S
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行7 D2 U7 R1 D/ R9 v, f" a
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)5 |+ `* b6 r. p0 D
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)2 l" T/ l3 L3 \6 Q/ e/ |
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)/ ?% o5 Y5 W# P" d+ F6 F, J
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
7 n' x, @$ {1 R; D' D! g+ b6 H @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
' X) J0 v: x4 {- n @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)9 @- K0 K$ K- ?. ]+ g9 S
GO9 x( u8 b$ o. R5 T8 V# I# |
3 i/ W" x5 X* U$ N+ T7 l) O3 \3 u+ l-- 将作业与调度关联起来" N) ~, S Z7 h" B: w# P; Q
EXEC sp_attach_schedule - E2 Z# E8 a: Z8 S3 [6 I
@job_name = N'IncreaseUserCashJob', -- 作业名称
: F) O* k& [! y* [ @schedule_name = N'MinuteSchedule'; -- 调度名称, w" T) }+ m7 y% S# j( Z# M
GO$ c8 ?, p+ Z d, _$ u
) C0 {3 W& a \* b+ ~+ I! q
-- 提交作业创建到SQL Server Agent
3 t& p( Z+ n# M4 T$ X& T( i) d# a' UEXEC sp_add_jobserver 4 U3 c6 q* ~4 B6 a
@job_name = N'IncreaseUserCashJob', -- 作业名称
2 S c# L: ^9 T: `7 ~ @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
2 ^4 N, o! {, }5 j3 x% DGO
* s* c. f4 W! o6 \5 k2 S' [0 @
0 K! j+ _+ d, F" ?
4 W8 i; }6 r3 k0 f0 x0 J4 K$ E& v3 A8 ^9 {$ M9 C$ j% z+ U
& { }9 m' {5 p# ^& I; i
' ^& ~ {' U( d. c& G% g |
|