高级会员
- 积分
- 726
- 金钱
- 598
- 贡献
- 53
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
1 _/ Z5 F/ b9 ^9 I5 S2 `USE msdb;" P9 l7 S& h" M& H
GO' }5 ]' m! d& C& [0 J e
c+ N4 c9 ]; a9 e& s" p* U9 b-- 如果作业已存在,则先删除它 L/ [* q0 u, ]" {+ {) K8 N
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')6 |$ l; Y/ W( j: D+ g% d: t- a
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';, ]0 N" U: h' X4 W3 j
GO4 L( P% o' W% q" `8 u" y
" C. r6 j6 L, n
-- 创建新的作业
; a2 X9 d& v P4 |# zEXEC sp_add_job
, D: b* J2 k7 \! w- Z. i @job_name = N'IncreaseUserCashJob', -- 作业名称
# N; h0 [( W8 n7 e @enabled = 1, -- 启用作业
1 C2 O2 p1 M% s- B+ R7 H @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
8 B* X# _1 O! x3 c/ u @notify_level_email = 0, -- 不发送电子邮件通知
* T- K. u: P4 a$ @. s0 b @notify_level_netsend = 0, -- 不发送网络消息通知
2 |+ T8 v7 c9 ?0 ^ @notify_level_page = 0, -- 不发送寻呼通知
& N, h2 C+ ^& P6 l! E- ~; Z @delete_level = 0, -- 不自动删除作业3 h3 `/ G8 ]7 R
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
2 J" p/ Q- q3 S! p% I @category_name = N'[Uncategorized (Local)]', -- 作业类别
; d, I) y9 R4 z @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
% E% e5 u4 N& z$ V; n! l& u @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员1 f$ u" p: m/ X% a7 N6 ]6 U0 ?+ X
GO
$ G0 J5 A. |2 R) k
* t I4 x& C! i' e$ {5 A \2 e-- 为作业添加一个步骤
( O* o% T1 j6 H* o" E" k6 \EXEC sp_add_jobstep
, C$ p2 T5 E9 c: h/ C/ u2 Y0 M, F3 y- l @job_name = N'IncreaseUserCashJob', -- 作业名称
K$ I; W1 y b3 \$ d x9 I: t @step_name = N'ExecuteStoredProcedure', -- 步骤名称4 U, Z A# v/ ^( @/ ?/ m
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)8 O. h9 M9 Q1 p% F( w# L1 Q3 c
@database_name = N'account', -- 指定数据库名称
) c7 i3 \7 M7 d @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)+ z6 _) |( f+ W6 c. ~
@retry_attempts = 5, -- 重试次数
' F9 k# f0 \* ~& |+ E! A; j @retry_interval = 5; -- 重试间隔(分钟)* A8 \ w# C; S) K; `- ?
GO! N0 d) P9 c( v9 T6 u
6 m7 M; w1 Q1 [( u, M-- 为作业添加一个每分钟执行一次的调度4 ?( u2 C. A1 r1 M
EXEC sp_add_schedule
& C( M7 s" x) f& x% y2 A5 N @schedule_name = N'MinuteSchedule', -- 调度名称/ [% U& w9 Y7 X
@freq_type = 4, -- 频率类型(4表示每日)
. C! g/ Q0 W9 j. G) K6 l4 F @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
! g( S }* r& | @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
* q% @5 g: a2 K8 v, i" \% C$ n7 @ @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
) b! t$ w9 C3 ^9 K6 ` @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)4 Y$ R- b; [& V/ v
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
' B3 d" z3 A8 p* z @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期), Z% E5 u1 ^- i* F+ X0 h
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)' B6 O! o V; K5 i; E
GO" z! ]2 h0 K- c9 W7 u2 L+ |
! q U3 J1 x. t8 D% Z/ V
-- 将作业与调度关联起来+ N! ~: C. r1 P# O
EXEC sp_attach_schedule ( C, w, r' r0 W5 [! E# e
@job_name = N'IncreaseUserCashJob', -- 作业名称0 E4 v: z! z( V2 l3 J
@schedule_name = N'MinuteSchedule'; -- 调度名称$ b/ F0 K3 J: A# j0 M, o1 y1 M4 G
GO3 Z( n5 Q+ Q& ]0 K
$ }: m3 N/ k' j3 f& p2 E/ u4 M% p-- 提交作业创建到SQL Server Agent
+ ~6 N7 B$ K6 [EXEC sp_add_jobserver % {8 _ ^5 _! M% S z; f
@job_name = N'IncreaseUserCashJob', -- 作业名称
4 G0 w& j- o f+ E7 y @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')# X; G& h5 R! E& [5 f4 Y) f
GO }. P% z( g. }' b' a( b9 X
' o" {0 a7 d% W+ O' ]
[6 M' |3 n8 ~& ?% D% q4 x/ p9 t2 }0 H- Q9 x9 V# t2 |+ g
) E9 \) I! u- J0 R! P- ^5 w4 G( R' N( r" P# Y
|
|