高级会员
- 积分
- 760
- 金钱
- 630
- 贡献
- 53
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------% \' _& {; \- V& a m
USE msdb;
o' v5 H# b* b1 p9 F4 MGO
" q, y$ x* Q! \2 y
3 Z, m0 p! f; V' l$ l-- 如果作业已存在,则先删除它" z" C" F2 y8 q2 c& e5 ~( W
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')" D& u# Y/ `( O' i2 B; P: I
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';5 d; c; s! z8 _- J$ y
GO, F# m6 N& W6 k4 z! B2 I
2 o$ [0 u, }. l9 v9 {) p, W( o6 v6 @-- 创建新的作业5 Y1 q1 `! _- J6 L* ]
EXEC sp_add_job
$ { C& a5 U' Z @job_name = N'IncreaseUserCashJob', -- 作业名称
4 T, p0 L3 @6 X8 H, f" c @enabled = 1, -- 启用作业! D8 z# V& x7 v" |- L6 o" i8 R
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改' N4 N( J4 w$ o- V
@notify_level_email = 0, -- 不发送电子邮件通知
* B. d$ q0 w2 ^0 d2 q @notify_level_netsend = 0, -- 不发送网络消息通知
! o4 G4 ]0 E' G) I! t" k; M$ J @notify_level_page = 0, -- 不发送寻呼通知
1 M# E e* p2 e7 ~. X/ O' M' c @delete_level = 0, -- 不自动删除作业
. X1 V& ^1 [. e4 s @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述2 Q& |. `# Y) y0 A) H) o7 O
@category_name = N'[Uncategorized (Local)]', -- 作业类别9 |0 `6 R* V* b$ e9 I+ O
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)( A( L1 \/ c7 e$ \
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员1 }% Q2 D. l3 a
GO
" g! k+ N! D+ g+ i! _% D; Z# M: A3 `3 S( i9 N6 P$ I- E
-- 为作业添加一个步骤; X# r: p) s# t4 C; S9 b
EXEC sp_add_jobstep
. n s" ]: }% t; ]4 J# i5 T4 z/ w @job_name = N'IncreaseUserCashJob', -- 作业名称
1 V8 ?# H* ~8 s9 B8 t6 f; \ @step_name = N'ExecuteStoredProcedure', -- 步骤名称
: l$ \! R5 E" N- G% {. r @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)5 H6 s! ?! m. o
@database_name = N'account', -- 指定数据库名称( q, S6 ^; ^ @& I
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程), E& o7 H! q" w
@retry_attempts = 5, -- 重试次数/ x4 r8 }0 I- v6 Y R; L
@retry_interval = 5; -- 重试间隔(分钟)+ r8 F" @; ~ z e7 q
GO
; V3 Z# g) p8 T- @) S/ v: k" J7 X$ h( B# w9 f* S% y$ f
-- 为作业添加一个每分钟执行一次的调度
4 z2 t' d, F& m- ^9 b7 ~EXEC sp_add_schedule 3 B5 A3 ~+ e3 O6 ~; ~ A' }( j4 n
@schedule_name = N'MinuteSchedule', -- 调度名称& s9 u: f! {. S/ X, Z+ u, X
@freq_type = 4, -- 频率类型(4表示每日)# e2 T! J' a1 e0 o- v
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
2 b% x' t; R6 t/ s @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
( f( p4 I# l7 k' ` @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)8 \8 l! [9 C4 f( T4 a; q9 I
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)+ j+ e5 }9 H0 D1 h
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)8 p" S1 p0 h5 b! I( g
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)9 d& A. P# N C
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)1 [) t* B- d! j- `' Q! [5 L2 F
GO9 V9 V) i% c, k0 Z& R
: c5 M1 S8 N0 f8 ]0 A( v2 e
-- 将作业与调度关联起来
& p; o6 p6 Z" l4 y& T" jEXEC sp_attach_schedule 6 u5 M' c5 h& @" a4 R6 n* _
@job_name = N'IncreaseUserCashJob', -- 作业名称
# Q* g* J7 t$ P1 e6 U4 ]' u @schedule_name = N'MinuteSchedule'; -- 调度名称
% C% ~2 w4 @* Y6 P& @GO5 [+ J% f( U) E9 e
! s% F! y0 u. E: i, D-- 提交作业创建到SQL Server Agent
1 s" A% v; X' B* @' q& CEXEC sp_add_jobserver * ~, T+ c( }7 X0 O
@job_name = N'IncreaseUserCashJob', -- 作业名称
" J2 N$ G4 w2 I- `. B @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
q" s! z8 }/ c9 `3 X, zGO
' H/ W5 F( A" b+ o
0 I% N# c3 S5 R9 w7 |, o
1 `$ u8 s6 c# s. p
, i$ J) f8 s, R* h% n7 F% @4 h& u% s6 I1 n
7 [) Y3 _ P& |2 ~8 @ |
|