高级会员
- 积分
- 812
- 金钱
- 678
- 贡献
- 57
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
! x/ M( e# l+ gUSE msdb;
% X# ]3 a2 j" j. |" w7 {" c6 V c3 {GO
$ W. k3 [. E6 z$ ?$ u' R' n( }$ W6 M6 \ j* s
-- 如果作业已存在,则先删除它
0 |/ H+ I& j4 yIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
8 Y/ v8 e$ e( i8 n T' K }" D$ d EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';& Q L* X% D) l: Q
GO; W% S, \# l& f1 X1 u
' G0 X% v3 V. ~; T/ r0 X5 n: V, s-- 创建新的作业0 R7 L) W) } Y# Y+ D3 ]
EXEC sp_add_job 0 I" O h! k0 V) V; _- ~, S7 D
@job_name = N'IncreaseUserCashJob', -- 作业名称; Y9 g) Q5 |2 D, a
@enabled = 1, -- 启用作业
. r1 J U5 Z% a: O- u) X @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改4 B6 J! W# j- O2 B
@notify_level_email = 0, -- 不发送电子邮件通知5 g+ w7 X9 Q3 o6 `
@notify_level_netsend = 0, -- 不发送网络消息通知" n. v, K* F" c1 h, X( n! L
@notify_level_page = 0, -- 不发送寻呼通知0 N; v! f/ Q9 K4 |! M
@delete_level = 0, -- 不自动删除作业
5 c, s& h3 s* Y; ]7 m1 y d @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
5 Y, u. f- T& y8 N8 X* x @category_name = N'[Uncategorized (Local)]', -- 作业类别$ ?4 Z1 U- i) e- {" r# L
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名), H/ w" b1 w E8 U$ ?% ]) g3 B) A
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员. [/ x0 Q: a: Q4 G" W* M( H* s% u" A
GO% [, m2 @0 r% N( f: X+ m. X! q
) }$ J- O `- [-- 为作业添加一个步骤, q1 M1 K/ d) r; |$ K7 ~
EXEC sp_add_jobstep 4 H' A. N9 B! ~4 g$ Y6 V$ D" s
@job_name = N'IncreaseUserCashJob', -- 作业名称! B& u$ l: _* _$ M0 H/ R, z
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
; H) J/ i& }4 R. C2 D @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
) v' x2 x ^) I! S+ e @database_name = N'account', -- 指定数据库名称
; {! K5 @5 D9 N6 C @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)% O9 @( E4 s* T
@retry_attempts = 5, -- 重试次数
6 `% d9 r6 s7 C# }( ] @retry_interval = 5; -- 重试间隔(分钟)* D0 m3 v' a+ ^
GO: N3 n: `2 V, l7 n4 X& ^) z
% \. b. D; R- X& R3 E-- 为作业添加一个每分钟执行一次的调度
. ^- z, e8 @, s D2 X! T- C. k; yEXEC sp_add_schedule
: B+ R# v2 r" m @schedule_name = N'MinuteSchedule', -- 调度名称4 s' Y- O6 [7 ^# U* u" \) j
@freq_type = 4, -- 频率类型(4表示每日)
; |9 U3 V7 d& j) [' h6 { @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
- @6 K X4 p- S( [ @freq_subday_type = 4, -- 子日频率类型(4表示分钟)% s2 _0 P5 Z- s9 l8 i" P' `
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)& F/ \5 O9 d# |( c
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
8 C, d5 [4 `4 s$ R5 i @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
. h, t2 e: v" C6 E p3 f2 X @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期) ~: R( E% G/ S7 r5 ?9 X- r
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)2 y+ {6 D: E2 |/ I! O8 X! x% q
GO- ~ d7 ~) ]1 F) e' V$ o
/ ^- t. o8 p" ]/ y( \7 _1 c! I
-- 将作业与调度关联起来& S9 \& C' K) a. W: [* A4 o
EXEC sp_attach_schedule ' v. P- L" k( s% k- I4 _- V
@job_name = N'IncreaseUserCashJob', -- 作业名称& F# b$ V2 k! Z& B2 d# a7 b
@schedule_name = N'MinuteSchedule'; -- 调度名称
$ p4 S( f4 Z( E8 B$ o4 i* K+ D, ZGO
& T0 L' g; B7 ^- f% G$ s0 p
. `* b% |6 {' M5 g; g6 ]5 @& x6 s-- 提交作业创建到SQL Server Agent0 y6 L" ?) G( M- K/ a# P
EXEC sp_add_jobserver * d: ?( Z6 D- f6 W7 k- S/ n
@job_name = N'IncreaseUserCashJob', -- 作业名称
8 L( k* }' E( ^/ w# z7 n" C @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')2 \+ c3 J/ v3 L0 q" V, h4 t7 j% @
GO
9 ^% v( T+ J6 W! _* h1 U6 L
6 r6 }( K0 y A( E& z
& q* k, g1 Q) c# x1 y) |
7 W6 _2 f4 ]9 E, t! I9 G- \+ ^9 c. i, N, \ i+ \
9 W" u6 I0 i# N5 M1 W6 a* U5 T! U
|
|