中级会员
- 积分
- 546
- 金钱
- 435
- 贡献
- 37
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------. j/ T' x; w, m. V
USE msdb;1 c" }7 _2 ?) M
GO
+ F- L/ g4 `! ?8 z" F4 [' F: K
4 a; L3 g8 B3 C8 E9 E-- 如果作业已存在,则先删除它
/ E% H0 |: b5 XIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
* y6 Q5 |, N8 V' a1 J EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';# r# t4 n# c. ^' J3 o; V
GO
9 e. ]* Y- @& z2 f( Z& o4 U/ O& Q! p
-- 创建新的作业8 I1 {( w7 b: h: Z; o
EXEC sp_add_job " z0 j" l6 k* @3 U4 H
@job_name = N'IncreaseUserCashJob', -- 作业名称
8 ~4 k F; u2 c) v! `. U. P; e l @enabled = 1, -- 启用作业# u- D$ {, T) [6 X' n6 l
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改( i. p. \5 o; v- {+ v
@notify_level_email = 0, -- 不发送电子邮件通知0 r( y* x2 A5 o# V0 S: H
@notify_level_netsend = 0, -- 不发送网络消息通知9 a: v) h: A x ~
@notify_level_page = 0, -- 不发送寻呼通知
5 t% l$ N J: \8 a" B @delete_level = 0, -- 不自动删除作业
% [4 U& P5 Y9 v* z5 Z9 A- ^: ~ @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
9 l1 m' X O: q1 ~# ~ @category_name = N'[Uncategorized (Local)]', -- 作业类别
( ?& z& W9 e' n( v. R% a' Q6 r @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)4 f* l) ~1 y1 \9 g- y* E: f/ |/ G1 K
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员3 C- [; ^$ d8 Z/ Y, g% K2 m% V
GO
3 z z2 f8 i% C7 j! J- W0 Z- P7 F7 ?* V
-- 为作业添加一个步骤
' l) z6 K- U6 X3 IEXEC sp_add_jobstep 5 V5 s0 K( [, C$ Z, Q$ O0 r
@job_name = N'IncreaseUserCashJob', -- 作业名称
7 F- F. m! M5 K) @( f @step_name = N'ExecuteStoredProcedure', -- 步骤名称8 i6 L) V* \- {& j W
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)% M: R) D1 \0 [1 V1 Q
@database_name = N'account', -- 指定数据库名称
, @" x7 o2 Z- k' K# _ M @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
. K6 m6 t* a+ m! `" _8 L @retry_attempts = 5, -- 重试次数& V3 J6 K M6 A. O+ H& ?
@retry_interval = 5; -- 重试间隔(分钟)6 G0 A# S9 P! q: y) c- o" t
GO0 |0 E- G2 ]( z3 u1 X: J4 O, d
3 k8 Z. j; D+ x7 D" Q7 Q
-- 为作业添加一个每分钟执行一次的调度7 K( u9 J7 I+ h
EXEC sp_add_schedule
/ j. E' Z/ e7 a$ u @schedule_name = N'MinuteSchedule', -- 调度名称& ~$ E7 [! h2 ~
@freq_type = 4, -- 频率类型(4表示每日)5 R" k! [" \# z
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行5 @" E" x# X" T+ q% J
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
' |7 ^! R: z( |! w S" W s @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)7 O1 b, z$ S' A- D
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
# v+ V, u2 R/ c2 u @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
: w" T8 y! o; s) j) B @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
. i, @3 r4 @# D; j- |. C5 Z @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)- A0 T: h5 Y1 G( f( `
GO5 M7 O4 o! }* I$ G
. N ]$ g- n G' A6 J-- 将作业与调度关联起来$ M# ] t7 R* Y
EXEC sp_attach_schedule 7 x% D# Y, B/ p2 p7 C6 V
@job_name = N'IncreaseUserCashJob', -- 作业名称
" L: a! I5 S( t3 n @schedule_name = N'MinuteSchedule'; -- 调度名称
7 F% c9 {7 D5 r ]' KGO
& \' {) S& y8 H4 V/ ~! \, k3 M, e' n, c2 b9 v( w2 y3 u
-- 提交作业创建到SQL Server Agent* O4 _& F: |- J6 E
EXEC sp_add_jobserver
, Y( M8 c* O9 h9 z6 d @job_name = N'IncreaseUserCashJob', -- 作业名称
8 A( J5 G8 \7 }0 w" R @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
* r5 y! n' P# x( E8 u& k) WGO: \: ]" n( z. a u. ?$ E/ O' f* f
2 \! t Z7 j' L3 L6 v) i/ k* [1 Q- A/ D$ i
& F; E S, i3 t. R. ^- Z
; ^5 I: h) V+ j5 L
9 U, r: b4 E) W; \ |
|