高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
) C$ w- G& F9 T8 o7 _USE msdb;
6 P# n1 F8 i/ z; S. S c) VGO
L6 k5 e- ^4 B' p. J6 i P1 h g H% B0 T
-- 如果作业已存在,则先删除它
$ n. u8 Z3 u4 L* @( q% A* g7 t* z5 kIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')6 j( w9 C) U; p2 [8 G7 k+ r5 i9 y" K
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';4 @( a* T0 _4 X% G$ g. \+ @
GO1 ]0 y# e# m' F7 D, k
8 U R! u1 t3 X5 L# ~! r$ g
-- 创建新的作业2 c: \+ h4 H) ^& _
EXEC sp_add_job
8 u* s' k! f; w8 I+ ] @job_name = N'IncreaseUserCashJob', -- 作业名称/ i. D- H6 O2 j0 M0 ^! z+ A& W
@enabled = 1, -- 启用作业
- z! B( ^, y( ?3 u8 _4 t7 b @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
2 _! I/ } q/ o @notify_level_email = 0, -- 不发送电子邮件通知
$ Z& |. ]5 p+ |& T- o, m/ | @notify_level_netsend = 0, -- 不发送网络消息通知4 }* S$ y8 r( M
@notify_level_page = 0, -- 不发送寻呼通知1 e8 x" @/ b# X
@delete_level = 0, -- 不自动删除作业- o) W- a8 x, s+ x. x: h; f5 _: d
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述9 n: r* c# S0 u, m3 J4 Y
@category_name = N'[Uncategorized (Local)]', -- 作业类别! ?' f1 T6 E$ [. F3 j9 y
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)) X4 r& l( o I' `* D; x
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
2 w2 n2 Z& a9 JGO
- g+ p% _: T" R" y0 u" \ f! J. A. o! g3 D5 i* {
-- 为作业添加一个步骤
: N; i9 q, g& ^$ P' N; ?EXEC sp_add_jobstep
. ]% l+ j3 t# r( t2 K @job_name = N'IncreaseUserCashJob', -- 作业名称
5 B% M$ `' Y. M! g/ g$ f @step_name = N'ExecuteStoredProcedure', -- 步骤名称
" Y8 I7 |5 p" |: L+ ]! T/ k; a% u @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
/ B9 u8 r. Y( C) t! j0 B @database_name = N'account', -- 指定数据库名称
?' ~( e- n# g6 [5 Q @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)( _% q) F+ W: n
@retry_attempts = 5, -- 重试次数; l: a! A- r+ I0 Y
@retry_interval = 5; -- 重试间隔(分钟)
+ w' E) l/ O* x: Y# J( P# VGO! p9 G/ x" M: R3 G
3 W( a N& S& E) t
-- 为作业添加一个每分钟执行一次的调度
_! I, k; S, @& k7 XEXEC sp_add_schedule 4 Z3 b4 W$ i- K4 q1 |, n6 ?
@schedule_name = N'MinuteSchedule', -- 调度名称
0 y+ A" D' C. A& B- L7 c1 }- J @freq_type = 4, -- 频率类型(4表示每日)( Y% m: k/ v: I3 h- V
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行% n* P# }4 L6 U% M! I- Q. H
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)" W& c f% ]& S7 _) R. P
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
2 R; d8 W/ Y% D2 Y' O0 c8 x" q @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)2 R1 L* p: m- u3 r6 s
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
) H0 U8 Y4 b# Y2 D; } @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
3 s0 R2 p, S; Q @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
9 ?( }& }/ Z# CGO
2 [ J, Y8 y, r6 |" p6 u* z$ ^" B3 s" q
-- 将作业与调度关联起来4 V, U% V8 [% g8 f5 n, Y# v
EXEC sp_attach_schedule : Y, H' U5 l' d: u1 i! E- |0 R$ c9 u6 L
@job_name = N'IncreaseUserCashJob', -- 作业名称8 F9 A! w+ I* a5 P
@schedule_name = N'MinuteSchedule'; -- 调度名称& [# }8 _/ Q9 ^' B
GO
! k: D; d, p) C0 n" I: j V* W* E( ^8 a& H+ q) r% C
-- 提交作业创建到SQL Server Agent/ J. f. G/ |0 F
EXEC sp_add_jobserver " U0 M& @9 R+ W" P0 A7 F
@job_name = N'IncreaseUserCashJob', -- 作业名称
- S, s) x+ @5 m4 V( X$ |, _- I @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
6 i7 n' J, H: J) @! k% mGO
7 z" O: }3 K# |$ h& D% |6 G. ~+ y" I( f
- l! |& b8 [9 z) D3 f: o, L
" i& n N4 u* T
, |8 ?; K$ H6 u8 n- ^% u- X7 V+ j+ a6 ] O# M
|
|