高级会员
- 积分
- 773
- 金钱
- 642
- 贡献
- 54
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
0 M" |9 \7 f+ m: S, V. E" [USE msdb;
- k( K8 h( s. Q( O! a6 JGO; j0 ]8 M* C) i* u5 G
Z% ]6 J% |+ ?+ u6 W% \
-- 如果作业已存在,则先删除它3 W$ C: Z% M8 A- s, ?
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
8 D* Y( \: l# `1 q EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';2 Y- P7 y" _0 Z! O+ I
GO/ K1 J: I8 R: J
% ~- u/ R3 X1 r( u0 y-- 创建新的作业$ M6 G$ O! g6 r( a3 }) W3 V' p1 E# a
EXEC sp_add_job
; M: W1 g; H. I S5 N' Q @job_name = N'IncreaseUserCashJob', -- 作业名称
- _6 ]+ N D8 `3 O# Y6 |0 A2 b @enabled = 1, -- 启用作业
, t3 [. u7 g2 Y) f @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
; Y4 H; O5 ]7 c @notify_level_email = 0, -- 不发送电子邮件通知
1 W$ S4 G1 b; @' C: ^! k @notify_level_netsend = 0, -- 不发送网络消息通知
! e3 t. D6 E& b6 I! N @notify_level_page = 0, -- 不发送寻呼通知
- Z8 x" D8 b1 Z2 f! E2 o" n1 H @delete_level = 0, -- 不自动删除作业* a' y# Y e6 G s7 s. b
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
6 G: g# i( ~: C @category_name = N'[Uncategorized (Local)]', -- 作业类别
$ f# y% q: l+ z$ r @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)+ Z0 I9 k% \+ b( Y
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员5 L& J" B! B1 [, I9 X3 S
GO9 s; y2 I! o/ y* Q* U. I/ W x2 G+ v
* n3 G V( x0 C( g6 ?0 }1 m( H, [-- 为作业添加一个步骤
/ h l a1 z! E/ rEXEC sp_add_jobstep : O' k/ B" E: H! [! A
@job_name = N'IncreaseUserCashJob', -- 作业名称1 D, y$ L6 x2 b5 _& d) l' v" F
@step_name = N'ExecuteStoredProcedure', -- 步骤名称6 x% ?2 l: e1 a0 u O& U
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL); x& b3 X6 O" k) K
@database_name = N'account', -- 指定数据库名称% m+ D. {& v; Q! n/ S$ {
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)( R: b0 y/ N3 |1 G2 R
@retry_attempts = 5, -- 重试次数
$ R; ?( K5 G) E9 @ @retry_interval = 5; -- 重试间隔(分钟)( X7 j( X- p2 {/ K0 R
GO
3 ?9 d* M3 r) m3 _6 z- g7 g
; V& G0 o5 Z* V+ _5 o6 [) w-- 为作业添加一个每分钟执行一次的调度
- w2 d2 [7 v! X. ]2 b2 V4 qEXEC sp_add_schedule
, ]8 l/ ~5 w8 ^* k. H: [ @schedule_name = N'MinuteSchedule', -- 调度名称( p: d$ K/ c; M4 m
@freq_type = 4, -- 频率类型(4表示每日)
3 P) Z" a. L" H. `4 ^$ }0 g. w3 K @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行& }7 \+ B( A1 t. G
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)4 ]+ G8 Z) |# n7 J1 Z0 z/ H
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)4 r) H9 n9 o/ s6 C, b u% O
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)* D @3 I. o; I! L6 g! v& E" a
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
( K! h8 q, I/ l* @9 O! [5 B* x @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)! f6 y* z* @# l: f
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
' w3 O& K% b5 w( [" c5 \( ?GO5 l: r3 I7 q6 s( G7 t
0 N' ~3 R3 M/ {2 [-- 将作业与调度关联起来9 ^9 W- {5 T- E4 P6 E) ^! N* V
EXEC sp_attach_schedule
: z" T% ^! P5 U1 D. [ @job_name = N'IncreaseUserCashJob', -- 作业名称
! p: f5 b% ?5 y4 { @schedule_name = N'MinuteSchedule'; -- 调度名称* m; S6 a' T6 f5 O! }) n* S* ~
GO; V8 Z7 e. k9 U4 Y4 d* {; ]+ _' b& k
* R& @- o. t( \6 W* ~+ V! F
-- 提交作业创建到SQL Server Agent
' L# m- S9 s6 h1 l$ m* F$ dEXEC sp_add_jobserver
& l. ?, l% N& j; j @job_name = N'IncreaseUserCashJob', -- 作业名称+ o1 M! c$ ?) Y* M& } @( R
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')! z$ i8 k& S8 O/ B& J8 p. R) M
GO# Z ^+ J& N: J/ Y q9 T) S& C! o
& Y# F6 ^7 S8 l; L! L
7 Q* p- V. p- m) O# t9 n4 W( \, f
. e, S$ j+ F7 V5 W m
3 ]2 ?' v5 p/ r5 G+ Y1 W
) K: L) d: @5 E |
|