高级会员
- 积分
- 838
- 金钱
- 702
- 贡献
- 59
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------6 Z- I9 p/ H! h3 j
USE msdb;6 i, ?- O! j# p9 J: h
GO/ r2 T& J: x$ C4 |: _
$ u# a+ D) g8 k, p' f-- 如果作业已存在,则先删除它
5 {! p2 `) g: g+ h& m" q" `' p# vIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')- r9 y7 j9 X3 ]4 ~
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';: h/ b8 n, I7 v- d9 e
GO
! K( I; |3 J$ U( D$ ~3 S
, J7 @' r/ y+ S# h# c/ o! b8 t( O-- 创建新的作业& t& w( m0 e, i& V& W
EXEC sp_add_job
1 x) d+ J) G$ _$ w7 K U @job_name = N'IncreaseUserCashJob', -- 作业名称
; C, ]6 p: t5 g; v3 F8 | v0 z& @0 ~ @enabled = 1, -- 启用作业+ {/ r9 @. x7 O' x, d- T$ C# D
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
) M7 w F+ D$ I+ R @notify_level_email = 0, -- 不发送电子邮件通知
8 q' j& ~& ~+ w; P2 q @notify_level_netsend = 0, -- 不发送网络消息通知) ?4 _1 D% x \( d+ K) N
@notify_level_page = 0, -- 不发送寻呼通知1 A; c3 f, p6 ^3 ?) p+ h3 t
@delete_level = 0, -- 不自动删除作业2 v" X4 |0 K+ H+ f' i8 g1 E
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述$ \' w9 T# t+ Y1 f+ r0 Z2 O
@category_name = N'[Uncategorized (Local)]', -- 作业类别$ E: b5 @. R$ ^( L0 u: H1 v. `0 k
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
t3 q" x2 ?4 j+ g9 S @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
& ]2 u- O1 \- r% X$ oGO
2 L9 [$ {+ ?$ U- M- U' D5 o0 `+ Y4 m2 J; a7 Y
-- 为作业添加一个步骤
% a0 z% S8 k4 S: f9 }EXEC sp_add_jobstep
# N% T5 i- J3 e( S! D2 m9 `% N5 p @job_name = N'IncreaseUserCashJob', -- 作业名称
& ?' r: {6 l) p2 A c k @step_name = N'ExecuteStoredProcedure', -- 步骤名称
; E: f( S0 j* y1 X9 v [ @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)3 l) W$ ?# U! |) y& G' P
@database_name = N'account', -- 指定数据库名称5 a' d! @ d$ J
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)8 `7 F) }; k3 N9 n6 J
@retry_attempts = 5, -- 重试次数2 ~7 `9 m6 o( s0 X' U
@retry_interval = 5; -- 重试间隔(分钟)1 W7 E4 Q( R# k8 A- d- G" ^* M
GO N' G4 N( ]4 U
+ n) I2 H! g: ~9 k0 m9 H4 _
-- 为作业添加一个每分钟执行一次的调度
" l+ E* B9 s, ?3 P' vEXEC sp_add_schedule 6 i* }7 e( {, q0 e& A2 B8 M
@schedule_name = N'MinuteSchedule', -- 调度名称
3 X6 k" l, f! [4 I1 o# H# N @freq_type = 4, -- 频率类型(4表示每日)4 j. P; N0 k# S. I' \
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行( j. K, @+ @( ^. T5 v
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)9 _- V: l' t0 L
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次): ]1 W9 Y/ m: U
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
& g" w& ?' ]* v' Q1 l; i @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)4 A- ?0 ^! @: L9 O% q$ Y4 u; S) | [
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)! z2 \5 Z: @9 e" i* u
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟) m" g; I3 x7 O6 X$ s7 f, Q
GO
8 C$ T7 R; l& Y/ ]2 c+ D5 [9 V. f- g, T8 _& O' x
-- 将作业与调度关联起来
- ~4 N- x( c! G3 U6 }- v7 mEXEC sp_attach_schedule 3 k3 @6 k! C7 e3 l. f" ]3 E3 m
@job_name = N'IncreaseUserCashJob', -- 作业名称
. E! ]! i) I: p' B @schedule_name = N'MinuteSchedule'; -- 调度名称
* }9 X8 x! E5 y$ X. U% [GO
) C6 C0 e" Y- o6 N5 }! }. {9 ^* a) B6 d" O" ~- ?8 |) l
-- 提交作业创建到SQL Server Agent
. D2 k% p3 d q, ~1 \6 p NEXEC sp_add_jobserver
" y( J0 b- i v( O! e2 b @job_name = N'IncreaseUserCashJob', -- 作业名称
& c- a$ Q% k3 D @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)'). X( M1 c' V8 S
GO
& D6 S3 ~. _8 B6 [1 ^
7 W% g! w# O2 X; U: F6 y! T4 @8 ]
2 t$ l: Y3 t2 {0 ]* M8 ?' G9 S. H. c4 X8 ?
1 G$ M3 o9 x! G+ N
8 Q- Z$ s: x" H. q' X' H |
|