高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
" ~$ ]- n$ Q; x) z+ R, B' EUSE msdb;
' s8 e) N x- Z- D; s DGO* I6 N& Y$ t$ A( s$ k1 R4 x
) @8 Y9 D* \5 c1 @$ d# c-- 如果作业已存在,则先删除它: S M: R- ?( [% o4 f9 x# p
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')/ p8 T# m+ x& m# T6 E8 L7 _
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';) D4 g! c Q% S, _6 }
GO1 D! h @' S$ z
$ I2 F) N( u0 g0 @3 T4 H& i* u
-- 创建新的作业# o; b' m5 b. ~- r
EXEC sp_add_job " {" F% U4 g D( r. H, D
@job_name = N'IncreaseUserCashJob', -- 作业名称4 T! n* P7 i0 r0 G+ ^& M. G
@enabled = 1, -- 启用作业: i. g: h5 @! a5 p& `
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改* z3 I: s) E. E
@notify_level_email = 0, -- 不发送电子邮件通知
' n- I0 Z2 K! Z; @/ p; h& X @notify_level_netsend = 0, -- 不发送网络消息通知+ W% D& Y/ a0 C( W
@notify_level_page = 0, -- 不发送寻呼通知
/ t2 U& |5 P2 s! | @delete_level = 0, -- 不自动删除作业
& T/ a* Y5 `4 N9 R r( I @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
6 J' p3 H5 W$ k4 F8 v @category_name = N'[Uncategorized (Local)]', -- 作业类别$ e8 }$ ?% v$ i& T9 l7 R
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)5 _( |% Y9 d& ]4 |; u
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
; H% ?8 l' ^+ DGO: r. o2 ?& T5 A0 H
* l U0 F) k3 r# `3 ?
-- 为作业添加一个步骤" o2 [. I. B$ s4 ~, u
EXEC sp_add_jobstep
0 S& ^# W, P" D4 Y3 t @job_name = N'IncreaseUserCashJob', -- 作业名称
. f: C7 W! ~) u9 i6 p: e7 E @step_name = N'ExecuteStoredProcedure', -- 步骤名称
- b+ G0 j& Y) U2 o% K/ f @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
! `( l7 ^: |1 \% ]3 c* v @database_name = N'account', -- 指定数据库名称
# S9 g1 K: _/ W# }' F7 h: V0 @ @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
0 ^. X' D* B- K j# h* _ @retry_attempts = 5, -- 重试次数9 S1 d# g1 _: o+ `" h- c. r$ o* l$ N
@retry_interval = 5; -- 重试间隔(分钟)
2 M/ R: Z) y9 t) B9 RGO* ]1 I, r0 v% R% {; `; D
* B( _; R( }5 u" ]-- 为作业添加一个每分钟执行一次的调度1 v- I( E( g- @2 e8 M
EXEC sp_add_schedule 1 H" r0 U% y" l0 d5 z; ?6 j
@schedule_name = N'MinuteSchedule', -- 调度名称
! ?# D% a2 m9 g3 K, l @freq_type = 4, -- 频率类型(4表示每日)
' {. w8 [% Q+ D0 ]" [/ F8 Z @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行+ d0 M; X9 A u) |. Q7 l
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
d: Y+ N8 z8 w" X* X; o @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次); w* \' h K# d0 U
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)8 V/ d* r0 L2 `0 Q9 H. r
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)$ h# }- R& ^4 L, |) ^8 S! F* b
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
, G8 C+ Z9 U6 Q% s @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)0 S: u2 k2 z/ j$ `- D" K( y
GO
7 C; x' U+ z- G7 b! I: P/ l6 e1 N7 D2 L" J
-- 将作业与调度关联起来
. T( b& K* [4 P% iEXEC sp_attach_schedule
6 e0 M2 d8 k/ q3 Y @job_name = N'IncreaseUserCashJob', -- 作业名称9 Z2 \" |. p/ ^) }: Z2 }) a
@schedule_name = N'MinuteSchedule'; -- 调度名称( j5 L( L& K2 g) k6 D
GO% U q6 Q: G5 X2 `# K% J" h7 N
- ^+ c% k; \( V; t+ u$ g- I) I6 v/ r-- 提交作业创建到SQL Server Agent
# F; R5 c# v# I! m( G( M5 dEXEC sp_add_jobserver
2 R, }0 Y2 A" Y3 ? @job_name = N'IncreaseUserCashJob', -- 作业名称/ {6 g5 H% x$ J2 m' J7 R
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')$ Z0 y# U$ }6 Z& H7 R- h
GO. m% T7 a+ Y, x+ L8 e0 {0 ~
0 @* l6 E/ s2 m; V6 \3 [+ h
/ p6 S1 P; e ]/ m% Z' K2 d4 e/ ~6 I; D7 x, p% o0 h. ]7 ?& r) K
$ z5 Q3 N$ }$ x. r/ A7 Z# B
: p* C. X4 ^) q7 _
|
|