高级会员
- 积分
- 867
- 金钱
- 728
- 贡献
- 62
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
1 r5 ^! p, z, x( M2 g1 L- v5 |USE msdb;5 H5 \" B7 X* _) C+ @
GO
* n4 I0 E$ K( O) n
+ o' u- H2 h- V" R-- 如果作业已存在,则先删除它
. A/ X( h9 u' P: e4 nIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
! f1 K, G6 c/ `7 d5 q. e& w EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
9 {; o- C' N. ^2 wGO/ x5 A M* X3 v) u
: V7 f' U7 e! w
-- 创建新的作业
( a B) e0 {5 i! q/ _! REXEC sp_add_job
. ^5 r2 i9 ^% d- {% E7 y' T% m/ ? @job_name = N'IncreaseUserCashJob', -- 作业名称
( W3 a' [, P8 ?" H' O @enabled = 1, -- 启用作业% A8 V& H/ ~8 F3 Q
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改5 O; `7 B1 Y& E+ n& c9 R
@notify_level_email = 0, -- 不发送电子邮件通知
2 K1 G, e& ]: ^5 ]& } @notify_level_netsend = 0, -- 不发送网络消息通知
. O f& g9 r8 b! m/ M @notify_level_page = 0, -- 不发送寻呼通知
7 l/ [+ J& ~7 v" m% Y @delete_level = 0, -- 不自动删除作业
8 U& b: x5 F' w) e9 M @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述0 g" [+ T& O% v5 B' A0 N9 I! R" I8 F
@category_name = N'[Uncategorized (Local)]', -- 作业类别; z' B7 D# x& g' B1 u0 Z+ D
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
7 B# _# T, R3 ~1 W0 t, i @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
- K; b+ V+ n1 ^9 sGO" A/ O8 n! O+ {/ j
9 X C* o. p/ X# d( w5 u! r-- 为作业添加一个步骤
5 y" ], |3 f) m7 k+ A; P: VEXEC sp_add_jobstep
% A* B% l5 M* W8 f @job_name = N'IncreaseUserCashJob', -- 作业名称7 c( n2 W% s" ]+ g1 b
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
% t' O1 V3 {- d3 X' v; E/ h @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
% H; V% w9 {; ?4 _ q5 y# N @database_name = N'account', -- 指定数据库名称9 d* i( d |) W8 ^: l( Q
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
7 \6 F! f$ @. d, e2 ]: x @retry_attempts = 5, -- 重试次数
6 ?0 W9 W" G5 U) G. _) Y @retry_interval = 5; -- 重试间隔(分钟)+ Q& P X; K" C- V. w( i
GO5 _ [+ Q4 n+ E1 @( C( ^* w
7 j9 a% l% p3 V" R0 n0 F-- 为作业添加一个每分钟执行一次的调度
5 p2 Z8 ^8 t5 J; z; r, \EXEC sp_add_schedule
( p$ ^& V# m* G- N" V* g5 z @schedule_name = N'MinuteSchedule', -- 调度名称
1 F+ ^; I& @: s" o @freq_type = 4, -- 频率类型(4表示每日)" A9 T% [2 I, T8 R C
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行 E, H! l7 r- @( J3 Z) V0 W1 D- Y& H
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)/ v. B, |" o' t" S, |& n8 d
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)# j9 }! R; H# P) J s9 d3 z1 b
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
! ~% t7 F* l, W9 w$ k; l' @8 Z @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)! j7 `9 g. P" x8 @4 \" t
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)4 f3 o' v6 q& x
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)- n3 s4 _; B5 c0 J, M5 i
GO
2 z" c/ j1 W# M1 E y9 j2 V. \' i9 h8 q# p/ A1 e$ o
-- 将作业与调度关联起来; G; E* i* q/ j( P2 x v7 P6 D
EXEC sp_attach_schedule
4 G4 U* d1 P) J* Y: \ @job_name = N'IncreaseUserCashJob', -- 作业名称
& K2 X( f3 n- p7 u2 ~ @schedule_name = N'MinuteSchedule'; -- 调度名称
6 S3 o( |4 x0 p6 n) r" X8 B' l1 _GO
+ I$ S1 r4 p1 g% I
; i7 `8 g2 l3 p$ x-- 提交作业创建到SQL Server Agent
) I$ D, c- A: ?: b' K P5 n1 c2 Y4 ]EXEC sp_add_jobserver
, {; x0 Q8 K1 Y, h @job_name = N'IncreaseUserCashJob', -- 作业名称) j" ]" t% Q1 G# `
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
( p& d4 r$ u6 {3 }7 RGO' }2 i+ m5 n( B1 \5 I
9 t6 m8 m1 z" q" P, q1 ]6 W6 H. P; X/ S, U }9 Y! j
) X7 i0 t1 W4 Q$ D6 [5 ]
( q% N. L4 a! x$ c
" a( G6 v; Q1 Z; x |
|