高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次----------------------- m, i4 a6 R% O( m8 o& M
USE msdb;
& I) T, O9 g2 A% m8 hGO% C* b" t$ n; v
7 z- |. t/ ]1 ?- k/ s, J-- 如果作业已存在,则先删除它- ]8 d: n# I. G5 B- X& L: a
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
A; q5 Y- u- c EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
' w5 f3 U5 T# x5 g! R$ zGO' j u. Y9 v7 h( A5 N
" D) P8 k2 C5 t1 S# }6 \-- 创建新的作业
+ I' z" N! D4 i" s% w8 @EXEC sp_add_job * F, g! [2 G9 S/ j$ |3 m0 L/ b7 P# z
@job_name = N'IncreaseUserCashJob', -- 作业名称/ y a( p5 h3 p$ V# C
@enabled = 1, -- 启用作业# X$ s7 }& k w# L1 L( d
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改9 U0 s) Y8 ~0 `% B1 U3 ^. p* ~$ J
@notify_level_email = 0, -- 不发送电子邮件通知8 C9 ]+ `) A1 b" _2 d$ X% O
@notify_level_netsend = 0, -- 不发送网络消息通知. I$ ]( m7 p5 l% Z' Q
@notify_level_page = 0, -- 不发送寻呼通知
8 w( b1 w* k' G( e3 m+ T @delete_level = 0, -- 不自动删除作业
2 ?) s( x4 h4 ]9 B* ]* m3 n: C5 t T @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
% p2 c6 h2 X! v6 u @category_name = N'[Uncategorized (Local)]', -- 作业类别
- ~. w/ Q1 _2 g8 ?( S w; Q: x7 M ? @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
$ U& |! t5 d5 a5 {. Y, d @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
B' ~# y5 |. D" Z+ }GO
$ v" B( ?! G5 t- w4 c: u7 ]4 |! v" J' v2 L1 ^5 y) K3 |5 u
-- 为作业添加一个步骤
6 z; n4 h8 H9 B3 N, u& E6 h4 fEXEC sp_add_jobstep $ T2 n, n; L* c( ~, K
@job_name = N'IncreaseUserCashJob', -- 作业名称5 n/ [4 R/ P4 S% e: n; R
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
. ?! x1 c* x. R9 ` @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
7 I& t8 g' b3 {5 T. s @database_name = N'account', -- 指定数据库名称
( m# q( H6 Q6 Z3 ?' X3 O- D) ^ @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)3 X) r/ d" e. H* b- Z7 H' ~- m4 S
@retry_attempts = 5, -- 重试次数
+ t/ p* F4 z8 w* P @retry_interval = 5; -- 重试间隔(分钟)7 S' I1 v6 A/ g$ \9 N: Y
GO% \. c/ }( Z- K' K9 k
, N/ ?! F6 i5 w8 T8 J+ m! P
-- 为作业添加一个每分钟执行一次的调度7 x8 ]" X5 U& s; a. L
EXEC sp_add_schedule $ ~% v& {9 N: S2 o! f: M+ w4 y
@schedule_name = N'MinuteSchedule', -- 调度名称
. H" M0 t, }1 Y g7 @ @freq_type = 4, -- 频率类型(4表示每日)
2 w/ n. V. a2 \8 A+ y& v* ^9 t9 m @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行# O+ Z! U! s9 J
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
! P9 Q& y( f% C) l$ x5 w- p, ? @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)* k" R: `+ B( H+ g0 [2 J
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)( k" R5 q1 m. w8 @, ?0 `; t( {
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
; C3 ~/ O% S: ?, x. h0 A @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)9 F! E8 M0 q5 b' v+ I
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
3 w( c( d/ @; `3 HGO
8 `! C! j5 q' Z, ]! B8 }" o- c5 L- D# y1 C$ ~
-- 将作业与调度关联起来
4 |% O' q, x2 g' T2 G; NEXEC sp_attach_schedule
/ L9 t# Y0 H2 }0 W2 D3 u+ Q @job_name = N'IncreaseUserCashJob', -- 作业名称4 {" d% V6 Z8 W/ E4 k0 N$ T
@schedule_name = N'MinuteSchedule'; -- 调度名称" }- f5 b, K4 h" g
GO$ a. g, ^" a0 R5 ` D! D
8 _1 S& j# D9 n/ T# a
-- 提交作业创建到SQL Server Agent1 h6 x3 X0 U3 I) V( I
EXEC sp_add_jobserver / y, y2 d' p: V8 ^( O7 S; b6 I% [
@job_name = N'IncreaseUserCashJob', -- 作业名称! ]) Z2 c/ U" h% m
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')/ W s( R" T% e4 f
GO2 [2 }1 D8 H/ f- a5 J8 Y. h- y! P @
; M3 k! R* x$ z3 L" i
2 i; q0 y! l' z( x* Z' q
' V0 q" _: v4 z( M, k: i' j1 O: f- |7 B4 X3 j
4 }/ V" {3 ?/ S$ u; _& X
|
|