高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------+ H' l. o+ U: V/ K: \& H
USE msdb;
+ M O- p% ?3 yGO- B$ P4 j& N6 b; ~1 a
- E- n D' A2 }# I8 y+ C& C7 b( q5 S-- 如果作业已存在,则先删除它& d4 l, i* H3 ~' q3 o
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')$ D, ^, |$ z. j1 t: F
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';; k/ B* j/ T# i$ w/ m
GO K3 L; U0 }. R; N& a! m5 n0 d
& a' e0 c. R4 ^-- 创建新的作业
6 `6 b& \5 W, _3 X1 H% n3 y5 nEXEC sp_add_job
u4 I2 G, ]1 T) S# o @job_name = N'IncreaseUserCashJob', -- 作业名称$ v1 W1 |! q% g
@enabled = 1, -- 启用作业
. B4 l8 a4 P: E2 ?! W) S0 Q @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
/ l. K" K# d+ B9 E6 j @notify_level_email = 0, -- 不发送电子邮件通知
+ Y4 ~# H! Y Z8 p/ Z @notify_level_netsend = 0, -- 不发送网络消息通知
0 M1 U' S) G8 O: w$ I. x# J @notify_level_page = 0, -- 不发送寻呼通知
2 o, }8 \4 |; F7 x @delete_level = 0, -- 不自动删除作业( h) ?1 c1 a0 t) _6 Z- V
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
- G% }7 B) B- F( ~. ? e @category_name = N'[Uncategorized (Local)]', -- 作业类别
+ G! k) y, B0 N- L: C. S @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
8 c9 l1 N/ _' J' O9 @4 T* x2 w+ u @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员5 ~+ B0 @& A: g
GO
0 ?, {) @, C% e$ d: i
/ N9 n, b: n- X8 N-- 为作业添加一个步骤" U$ F X1 \( U; R
EXEC sp_add_jobstep . v$ v, }8 x! L
@job_name = N'IncreaseUserCashJob', -- 作业名称. F, t j7 g3 z- }% D' W
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
) o* k' K, j9 E% h+ v2 e: L7 C- I% h! J) u @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)3 B b, U. q( J+ N
@database_name = N'account', -- 指定数据库名称; J& A: i5 W0 t% Y: |% T8 ]- x
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)# Q; c; Q3 G: X, \7 ]
@retry_attempts = 5, -- 重试次数
7 l# m) I. N; S$ U; u @retry_interval = 5; -- 重试间隔(分钟)
2 U! Q2 K8 K7 Z G1 ^: nGO
, u/ A$ _* a5 \6 O$ C, n- h% n9 g$ h% Q# W
-- 为作业添加一个每分钟执行一次的调度
; ]9 r6 M+ J# W! Y5 T$ N9 z+ ^/ fEXEC sp_add_schedule
1 ]; w4 L) D- ?7 T% A @schedule_name = N'MinuteSchedule', -- 调度名称! b! _- X5 _, z& X
@freq_type = 4, -- 频率类型(4表示每日)
! }* W6 H7 e/ Y; _) N9 U: P @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行; |6 p% P( M0 ]* ?
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
; J& h, @$ j+ V2 i. @ @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
9 A- ^: n4 u0 h; l0 h$ O @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
1 a3 B Z( ^( K @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)7 F) U& w! w% p3 f% h1 J5 L
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
& ^9 J3 v) E$ X- }1 A7 e+ B- ~* ?" ` @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
* O9 D3 D5 W/ y2 v: k- v0 qGO3 I" R3 G' w1 J
6 H& l! Z! b" N& \9 h0 P-- 将作业与调度关联起来/ z, h( q# K+ W! s- ], c
EXEC sp_attach_schedule
9 W; |# f1 u: S) e: @9 s @job_name = N'IncreaseUserCashJob', -- 作业名称
5 D7 X7 d9 m7 e( W: P$ H5 x @schedule_name = N'MinuteSchedule'; -- 调度名称
, n4 s' V/ H! P0 ~GO
; l( j8 h6 W: [
( Q; K) i" d: d1 o5 W& d$ O2 {) ]-- 提交作业创建到SQL Server Agent8 U( e4 [) ]0 a
EXEC sp_add_jobserver * w8 F) S' w; \2 j- B Z0 O
@job_name = N'IncreaseUserCashJob', -- 作业名称0 l- P$ |7 J% [* K( L
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')- D7 Z' P- o' [2 C0 ]. ~) J2 X
GO
" L9 l4 {! ?" B" p' m w5 |
7 Z. L* Z' c4 F3 P; k
B* M' d1 h* ]$ n. y: A
7 ]+ u; k9 M- Y# o4 h- V1 ?/ o8 b& z' q1 ?' h N" x4 Q& n% W
( |0 x9 o, z, v
|
|