高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------. {) m* |$ g# v9 h' n6 d4 c& t
USE msdb;
" k Z8 y+ S& tGO$ ]: G$ r2 }5 L: J6 V6 _; } O
) o9 l5 e. A, n; y
-- 如果作业已存在,则先删除它. t1 x: v6 p" b. C: I2 J) w0 Z
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')7 h, S' V0 E; X4 _. e+ T
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';$ O) v: \$ U: r. P3 z: @" z
GO* q, b- V2 t( d. F6 U
6 p0 M9 O# u [0 r0 X G: s
-- 创建新的作业
( [4 V, L# A0 o0 ]) K& E! D% X' LEXEC sp_add_job % u1 b+ y$ x/ ~# ^: D( h
@job_name = N'IncreaseUserCashJob', -- 作业名称
, R& t7 j, b& U; o; R- A2 e @enabled = 1, -- 启用作业
. E0 ?' z. c' R; F( q @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
; r* c! v! ]* r @notify_level_email = 0, -- 不发送电子邮件通知- H/ d+ |( J! L% x* x! ~
@notify_level_netsend = 0, -- 不发送网络消息通知
( E% _0 m9 _% N) U* O* o& [ @notify_level_page = 0, -- 不发送寻呼通知, X( Y/ Y: o, [9 c
@delete_level = 0, -- 不自动删除作业( _' t7 W, @2 A: P: d+ T
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
% r9 I8 D6 a( i/ a: l @category_name = N'[Uncategorized (Local)]', -- 作业类别) ?- S6 M- ^' r3 r; X. ~$ p
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)" V% F6 m# s/ |: o& f+ k5 R! L
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员7 q1 a1 @7 \% r/ { i: Z. d
GO) L& l4 N: o4 f
$ k! @& {, ^& W4 W1 y
-- 为作业添加一个步骤$ {7 i8 o6 d- G9 m0 @ n! n
EXEC sp_add_jobstep
0 F1 |4 ^# m0 ?+ n @job_name = N'IncreaseUserCashJob', -- 作业名称) |; t& s/ P$ k; C m
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
6 U* t) j4 W5 {$ C4 ?! T @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)( M6 X, \+ ^6 d0 G
@database_name = N'account', -- 指定数据库名称
8 i* i4 s# K2 ^0 p1 G# v @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
. b1 F4 d t- F3 M7 S& z @retry_attempts = 5, -- 重试次数: V8 P( x2 X) X* R0 K) f
@retry_interval = 5; -- 重试间隔(分钟)4 K1 M( D; f" G: w0 k! e5 I' u
GO8 C* e/ h4 G k& w
- \& W( ]8 r! ?! h# t3 ^
-- 为作业添加一个每分钟执行一次的调度* ^* g3 K' D# c' L3 [
EXEC sp_add_schedule
* q3 p2 A* c: J2 ~* ^5 w n7 R @schedule_name = N'MinuteSchedule', -- 调度名称
/ c, D) \7 n3 L# Y" X @freq_type = 4, -- 频率类型(4表示每日)
6 e/ U( }5 i8 B @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行1 N, m$ S* L7 h0 w/ I
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)+ ?, u ~& Q4 n( c
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次); @# `2 \* C8 i2 K$ T
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)2 N6 h0 ^! p0 C
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
# [/ D8 q7 |* x# l @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)( X9 C" w& ]# R0 z3 y* A
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
" M: T @% b# @) oGO! }, l9 r" A5 J5 w, v
6 t/ Q5 e8 @ _; ~5 i
-- 将作业与调度关联起来$ n1 c% j2 x) {5 t' B
EXEC sp_attach_schedule
* c! I7 ~: }: A# w+ K @job_name = N'IncreaseUserCashJob', -- 作业名称7 Q/ p" n1 H8 C
@schedule_name = N'MinuteSchedule'; -- 调度名称5 y3 `$ _8 ~5 x! N: c
GO
( G# R/ r) M+ J& s" }* L3 O! d& b+ g7 V% R7 b: f7 o
-- 提交作业创建到SQL Server Agent
6 l9 F: G/ i% ?3 L! G* mEXEC sp_add_jobserver 3 k0 m* k2 h+ q0 p, B
@job_name = N'IncreaseUserCashJob', -- 作业名称$ V7 J3 Q u" |" `4 z9 w- F( E4 `
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
1 p: k* l4 H" KGO
5 @, Z V& I: b \' q' J2 T0 R- O
* V& M" {7 a# _! T! q0 c$ ?% Q' {4 ?6 D" ^, B/ r
0 P+ O, c* \. B
) A H9 P- Y! C: B Y6 b
9 r4 H' Y3 i2 W' o+ u+ Z0 i' z$ K |
|