高级会员
- 积分
- 825
- 金钱
- 690
- 贡献
- 58
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------8 F8 H: s9 N7 d& ~- I
USE msdb;
1 R8 b5 b7 o- |GO B* C' A3 W7 Q; y0 {5 J
2 y# r# {" |* d# z+ w6 f* L( X
-- 如果作业已存在,则先删除它+ U# S6 S0 S$ k! ?$ _ M Y3 z
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob'); J5 K+ q( ~$ J5 ^
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';' d$ c' N f/ e1 Y$ U+ G- t
GO
1 ~# k0 W& T) W1 [) i" |, x9 J; n8 u* f" {# n
-- 创建新的作业 A1 c: |* G% J. Z
EXEC sp_add_job 3 v4 W. ?" _( K ^
@job_name = N'IncreaseUserCashJob', -- 作业名称3 {" \7 E* Z( r1 Z! n
@enabled = 1, -- 启用作业
& V ~" X- T9 `7 w$ z @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改5 s% E0 g+ L5 M, c
@notify_level_email = 0, -- 不发送电子邮件通知9 s) X7 }8 Z" u6 w
@notify_level_netsend = 0, -- 不发送网络消息通知 [6 N; N1 x9 [. _
@notify_level_page = 0, -- 不发送寻呼通知 g/ t, d# z' ~! m: U4 y
@delete_level = 0, -- 不自动删除作业, I1 \# M2 J a
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述6 Z2 i( {3 @' W+ K4 x
@category_name = N'[Uncategorized (Local)]', -- 作业类别* j+ U4 t8 l. d b) M
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)7 R5 p9 U( }" h; Y
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
1 U) }( G% {# B" b# {$ }GO
1 _, x. l5 k0 Q6 ^3 d* }# u; ~ w/ A) `( V6 C
-- 为作业添加一个步骤
0 r# [8 C" C9 |& r: C0 ^1 hEXEC sp_add_jobstep $ H/ R& r0 p- L6 c1 r9 C
@job_name = N'IncreaseUserCashJob', -- 作业名称4 i% u% X3 ~) c2 p8 ~
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
! ]+ W0 x2 o1 u! L* D @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL) ]# T) U& ?$ ^0 t. [
@database_name = N'account', -- 指定数据库名称
7 c% o9 R" x& w$ @8 e( r7 r @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)9 q1 O3 ~% Q; N
@retry_attempts = 5, -- 重试次数
5 L* F( w3 f* |5 r8 o- A5 [ @retry_interval = 5; -- 重试间隔(分钟)% Q* s6 K$ t" z! U/ Z" `
GO
% T4 u0 D8 C5 j. X5 ^. c
) q, N# u3 l5 u6 i7 C-- 为作业添加一个每分钟执行一次的调度
/ m. e9 F; K, A$ S+ o1 Q6 D2 \0 kEXEC sp_add_schedule
- v- N& p& v& F/ c1 P @schedule_name = N'MinuteSchedule', -- 调度名称
3 s- w" s, Q0 h) d' f @freq_type = 4, -- 频率类型(4表示每日)
' r2 A' G, P: @7 i) ~ @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行6 K6 |, X, M/ _6 u2 f( l
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)8 ^2 ], r9 E$ X" o* O
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
' k9 X+ F' X# A# Z/ A @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)6 Z0 U8 e( l. g7 ?! Z2 f
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
1 ^, @: C4 }1 q, h @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
, Q' x. E6 L+ Q+ r0 e" U# ^& L @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)& _' ]: D; X! z! _% ?
GO3 D( d* `" h3 y0 {2 l
8 A+ l3 |0 m" \0 t7 F# f5 S
-- 将作业与调度关联起来% b& x6 Y! F6 m6 W
EXEC sp_attach_schedule
, ^& H0 a( s# u+ B, `% l @job_name = N'IncreaseUserCashJob', -- 作业名称
O2 K$ w3 `" w( x @schedule_name = N'MinuteSchedule'; -- 调度名称: _) W( M3 D# V# U
GO4 W" e# e* W: m3 |2 }9 G
8 M: l0 D$ i- \( U-- 提交作业创建到SQL Server Agent# Q5 ]/ Y, {/ O. o* A8 ?) h1 Y
EXEC sp_add_jobserver / D: P4 e1 q7 v2 H) }- i3 h0 T
@job_name = N'IncreaseUserCashJob', -- 作业名称
o4 O4 X2 p; X, g. \. C4 |8 q @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')$ n% W7 k& L- [! @
GO
" X$ E: X" B% ?' Q$ @ M3 d
9 \- Y3 L1 W( V+ \5 A" ?, B0 b/ J1 a7 g1 W6 m
; `+ L) u& u. [% r8 J3 l2 {2 c; R) u) M, w( S; S
. M# |1 g1 Y: w7 Q* _: [+ Z
|
|