高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
: o+ o$ `, u+ \3 s) k! A6 ~USE msdb;: U9 [8 @# |& g8 C. z" _
GO
8 S( s$ n/ s v6 ]* M1 X
X- r2 \3 ?4 o( }. Y2 K$ l; y-- 如果作业已存在,则先删除它; [- p9 e( T# y! ^+ |7 m, W# O
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')- s* {" m. e$ Y! A5 g# u+ c
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';& ?; J/ `1 R) w4 L: C+ p8 u
GO
3 I: e( `/ u9 M4 b1 z+ d, q/ H) ?! [$ j) ^, u! D. C/ K0 C
-- 创建新的作业3 Q$ I4 ?! I' A; S
EXEC sp_add_job " Y6 X$ n. a" t7 C0 f$ `
@job_name = N'IncreaseUserCashJob', -- 作业名称+ |2 [' U' s& s$ j/ e/ r' F
@enabled = 1, -- 启用作业2 t9 {" v; L9 P
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
$ x7 s& p+ z0 {5 ?9 Q l @notify_level_email = 0, -- 不发送电子邮件通知
8 V4 ?6 G( n1 J Y4 o @notify_level_netsend = 0, -- 不发送网络消息通知 c3 W$ s7 {+ H" U: x- r
@notify_level_page = 0, -- 不发送寻呼通知, y, a! }6 @6 h* y# @
@delete_level = 0, -- 不自动删除作业. o7 }' y, u. S f F, `# ~
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
. p1 L1 }& M3 v/ N7 x `# ] @category_name = N'[Uncategorized (Local)]', -- 作业类别
- R6 `5 c7 @" u1 N& i/ K" F# O t @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)& u( s, v. S3 ?0 V
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员& _4 A4 ?) K7 R, a% I
GO
2 l7 @& K; V% S/ r3 {
; T! j# f/ l7 g) n. y' b6 {5 `) r-- 为作业添加一个步骤% e, l1 Q% Q5 C. q, Z
EXEC sp_add_jobstep
! D7 }, Y& u1 | @job_name = N'IncreaseUserCashJob', -- 作业名称
# u( M5 x+ f- o% u$ Z5 k X5 ~ @step_name = N'ExecuteStoredProcedure', -- 步骤名称
( F9 \0 b0 U0 p7 U @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
9 ]9 u* R7 V1 L: V* N @database_name = N'account', -- 指定数据库名称
0 I q2 c) f, j: m @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)$ K2 ]. S8 q. T2 n
@retry_attempts = 5, -- 重试次数& F: }- H& G9 k7 P; `3 t6 I2 G
@retry_interval = 5; -- 重试间隔(分钟)/ O7 m# d- O8 U) w/ m
GO
9 z! H) a' z: W% y& P8 @2 E; ?
+ v5 S; D, Q; N; a: ~-- 为作业添加一个每分钟执行一次的调度1 E- e. d' |8 s% F4 R5 y( U
EXEC sp_add_schedule 4 @7 M/ M C- l! \+ H
@schedule_name = N'MinuteSchedule', -- 调度名称; j- {7 n( Z0 f6 b( n9 |0 D2 ~
@freq_type = 4, -- 频率类型(4表示每日)
4 x2 y% p5 T7 L3 J7 j% [ @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
0 g8 }! B8 e. k, C+ \" `2 e @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
/ A! i3 W! }, q- _% J" U% O: G @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
: h! j) ^* P6 s( G2 R( l" {) w @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
& r4 w/ w" V6 ^9 |$ e# E, c" t3 | @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
) V" m! O& l3 v2 Z {; y# {9 U @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
& m! l a/ Y b8 e' p5 w& ?8 } @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟); ^4 C' p2 Z( B, @- Y' B6 P
GO
1 }7 i- W) }1 {' n E1 p, d( x% B& |! ~8 q4 X$ Q
-- 将作业与调度关联起来
9 B4 ^$ f# R8 l4 V) g" [. X9 H8 BEXEC sp_attach_schedule # ?; ^9 {1 P6 A8 |
@job_name = N'IncreaseUserCashJob', -- 作业名称
, n* z! E1 ]6 z b! [ @schedule_name = N'MinuteSchedule'; -- 调度名称2 M8 M- e5 O8 R3 r( M
GO
( F4 [& M7 J: h: P/ E5 ]; `
7 c+ o) \) r7 r8 E# w-- 提交作业创建到SQL Server Agent
- N5 W u1 K2 E$ o* bEXEC sp_add_jobserver
) p( K- B# [; r @job_name = N'IncreaseUserCashJob', -- 作业名称3 A! e. h5 n1 l8 p5 f
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
7 d8 ^8 }0 ?* _3 j+ VGO: N2 A5 Z2 `7 e, S
6 w$ s5 n: [8 h2 K. K6 E
7 `5 c5 s* e1 Y. T: O. ^
2 Z7 T( j. u: `0 p4 a$ h3 H$ b9 W8 G) g+ A( Z( S$ x
# S9 U& @ M* ~8 s, [+ L' o( c# C9 H
|
|