高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
8 w0 u5 e! h& j+ u2 }USE msdb;
0 {% H, z- d5 R% m: |GO* t. w; n+ V' g$ _, l3 c; S
/ a7 v# P- @/ Z0 ?) _-- 如果作业已存在,则先删除它9 N3 g! `% d0 `9 [! F: l1 A, R' W
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
/ T' P3 b$ [; s/ Q$ q4 u0 |& [; t EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
1 j1 {% T4 T( X5 `9 M9 JGO
: \1 H+ @% X. ?/ M; N7 ^( u4 x$ b% y
+ B+ Z, p! y: X0 X& W-- 创建新的作业! N8 t! T; r# {( C+ V/ b
EXEC sp_add_job
6 S" i: x7 _' G0 } @job_name = N'IncreaseUserCashJob', -- 作业名称
2 a# m) t$ S4 A4 l" G+ j" c2 G @enabled = 1, -- 启用作业( J% I j v: R, D
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改6 E* h! N9 t J, Y2 \4 H6 R
@notify_level_email = 0, -- 不发送电子邮件通知8 \" _# L) z3 K2 E
@notify_level_netsend = 0, -- 不发送网络消息通知
1 s: N0 s% m) A0 T @notify_level_page = 0, -- 不发送寻呼通知
/ }# h# K, U. g# l! w- { @delete_level = 0, -- 不自动删除作业
; F/ J; `+ N8 _ @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述9 ^- M* |" ?2 M$ g( k# Y1 f( w: i
@category_name = N'[Uncategorized (Local)]', -- 作业类别9 U2 f" [; {6 Y9 |- R' W
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
c/ k, u) M" s# _: x2 h @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员5 G& O( @+ [ t8 x2 F( s
GO& Z k2 h$ g; W5 s$ t1 w
+ I7 J4 q$ ^. E% J7 f( M- W( \
-- 为作业添加一个步骤
* B0 G4 w- a+ j" a: oEXEC sp_add_jobstep ' W: R; H- a7 Y* y$ J9 f3 A& d
@job_name = N'IncreaseUserCashJob', -- 作业名称' l3 q) \; [: f& I
@step_name = N'ExecuteStoredProcedure', -- 步骤名称 v3 M9 y4 g- n& r1 w! @& T' o& M
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
" l# A5 o2 s6 S @database_name = N'account', -- 指定数据库名称
3 ?$ j. h+ Q/ [; }+ n7 d @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)8 c- t7 { n2 u3 G
@retry_attempts = 5, -- 重试次数9 q' L; J, C7 K2 w- B) t9 u
@retry_interval = 5; -- 重试间隔(分钟)1 }! K. T4 N0 O6 y
GO5 g6 w% b) Y4 e8 i
. R5 o, `" e4 E0 _. C4 M1 `' q$ Z
-- 为作业添加一个每分钟执行一次的调度
/ O1 |3 k+ E/ r8 n* Z F9 JEXEC sp_add_schedule
$ b, n2 ]0 B B E9 f @schedule_name = N'MinuteSchedule', -- 调度名称4 d# ~9 j6 ?% L+ R7 j; C8 w
@freq_type = 4, -- 频率类型(4表示每日)$ k# s8 v' ^' S8 _3 L
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行 V& x' C8 |- ]1 b0 H5 M
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
! v: ]: G" u" F6 }! z @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)% V% c0 A# m" b S% S7 w" b. p
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
# O/ L" y4 m& t+ U- q, B0 B$ K @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)$ i- E8 N9 d* z
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
: N* s3 D7 {4 S4 K9 d @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟): G+ ?& [% I- O( o* n7 V
GO: B3 U* \- k9 L9 S+ z" N A
, p# S( ]! q: ]7 c6 o* P& h6 }- `
-- 将作业与调度关联起来. N$ Y5 ?% @* o( B. H3 E
EXEC sp_attach_schedule
! K7 ^! }) N2 c @job_name = N'IncreaseUserCashJob', -- 作业名称
* i* a1 Z4 a! }' R% T0 [ @schedule_name = N'MinuteSchedule'; -- 调度名称
' V6 |" ]% @2 c8 o; m! k K3 HGO* ]" c8 `$ T, G
+ F% k! H* B: F `: x
-- 提交作业创建到SQL Server Agent
) _; x' ^. q* j6 ^$ YEXEC sp_add_jobserver * j4 m) K" E. e2 V9 G
@job_name = N'IncreaseUserCashJob', -- 作业名称
7 ~ {/ B; d+ Z7 u; B/ c0 v @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)'). V3 x$ p* q- Z
GO3 a. Z+ [1 W' j, ]9 w
) S5 w. a( Q) T. I! ~ f- p# V* A$ k
5 c6 g: }/ ^! }, t: k# u
4 F9 B' q' U0 N* `4 B
# j+ x1 H( g5 F { |
|