高级会员
- 积分
- 870
- 金钱
- 730
- 贡献
- 63
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------2 q& w, ]7 Z; B8 D4 J0 x2 c" x' N
USE msdb;
# \1 q3 k P" t# q5 k. ]( qGO* K" Z- M7 D& o8 Y" C% q
6 e! P8 v1 l+ n# x& _-- 如果作业已存在,则先删除它7 F. f+ m# D$ Y1 ?1 q0 o
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')8 @9 z7 h5 L! Y) }
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';6 l( R4 \1 x' H+ R! T& {
GO
$ @% e) I/ K% P3 C, B( j- ~) v
I, I# A( {1 f3 h) h) S-- 创建新的作业$ ?; e: G3 m+ a4 S* W* F- j2 ?7 \- i3 O5 j
EXEC sp_add_job
; X, i7 d4 v) Y @job_name = N'IncreaseUserCashJob', -- 作业名称! K. }1 z, a0 l: [
@enabled = 1, -- 启用作业
7 O! \* R; K4 ]7 k& m @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
! i2 O1 f3 R* t; @+ J. | @notify_level_email = 0, -- 不发送电子邮件通知+ W$ K# R# ~1 u- j! @, Z
@notify_level_netsend = 0, -- 不发送网络消息通知! G+ E# K$ s/ Z* K2 O
@notify_level_page = 0, -- 不发送寻呼通知
, y* C9 i* ~- u5 B, e @delete_level = 0, -- 不自动删除作业
/ L$ ]# h* P3 n* U& w @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述9 B; o' f( P4 e8 r: `
@category_name = N'[Uncategorized (Local)]', -- 作业类别
7 s/ _. g& K& z" |! D @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名) s. L* {# p, V4 \6 P9 q4 N6 j
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
/ E5 \% O3 ], G! z( u0 w; yGO2 N# {$ \5 V0 g% l" Z1 `: J% W4 Q
% s y6 N5 y7 r, y* f4 G8 {8 I" F3 ~-- 为作业添加一个步骤; @( n9 a2 X0 K$ p7 ~
EXEC sp_add_jobstep 1 P# h" q5 ^4 r! ~4 J3 e
@job_name = N'IncreaseUserCashJob', -- 作业名称
; l9 m2 u! e0 d9 C4 i f& U+ {; z @step_name = N'ExecuteStoredProcedure', -- 步骤名称; c- {+ D; D. S, k8 c
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
2 N/ b u2 m8 s; v @database_name = N'account', -- 指定数据库名称5 @1 x6 Z/ C. k/ }4 y: i7 b
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
: k- l2 z* |& ]. b; y" b @retry_attempts = 5, -- 重试次数
+ w5 ~0 J) W+ Q: v @retry_interval = 5; -- 重试间隔(分钟)
- {* x( y3 m+ B+ `GO5 v! c& r8 [ w# e( y6 {& P
$ p$ u% ~- ]/ I D+ k. _, T-- 为作业添加一个每分钟执行一次的调度
1 A; j5 d9 W$ q* wEXEC sp_add_schedule
3 \1 V5 v6 z! a+ [$ j* a* J @schedule_name = N'MinuteSchedule', -- 调度名称
/ X1 p+ u1 G! G! h @freq_type = 4, -- 频率类型(4表示每日)# |& z# j! e$ Y( r: {! n2 u; ]% h/ E
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行/ h4 [" N7 s+ b' N6 x
@freq_subday_type = 4, -- 子日频率类型(4表示分钟), {1 @1 l) o: S1 V0 P) s% Z( ~1 Q4 q7 T
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
; [2 Z8 J+ P0 V% }+ B @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD); c7 x5 ]. g1 C# o4 s! }
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
k4 ]( ]$ k' k2 b/ M @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)$ a2 R- a# q! Q% h
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
$ u' P! J. e5 r* b# e' QGO
; U3 j9 L2 h, e/ O a( ~+ R/ o; x; l: X( R
-- 将作业与调度关联起来
0 m- r5 W: u4 A2 ^EXEC sp_attach_schedule , ~; S" S$ G# z& w
@job_name = N'IncreaseUserCashJob', -- 作业名称
/ [" c) Q$ r+ t @schedule_name = N'MinuteSchedule'; -- 调度名称
$ m* t" [5 _4 R. [# E8 RGO
3 I& F& U z k; f* i# g- ~
$ S$ M+ n3 W) }! S X3 z-- 提交作业创建到SQL Server Agent4 {4 q- O# L. b1 a# k: B
EXEC sp_add_jobserver
1 a) d1 c+ o1 _; E" l6 [% i @job_name = N'IncreaseUserCashJob', -- 作业名称9 c$ n$ b7 S2 r+ B' h+ T
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
( U/ M' `) X" NGO) a, C8 A$ C9 E# e6 B* v
. ?6 S! t0 u; C" K8 a
0 Z) \3 p* M4 k P( Z& P! F+ ?3 i2 a4 q. v3 ?; q( g
. ~! x9 {( `* Y8 K
" _7 S. R0 D# m! F |
|