高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------9 K( i2 [: V0 D) u6 ]! b1 L; f
USE msdb;- Z- h& U2 O8 U U) L6 N: \" L( c* b$ I
GO
# j8 x, P2 H1 C0 H2 \0 T) t( v5 x
0 Z- R$ J. |7 s! p-- 如果作业已存在,则先删除它
* Z* ^( J3 f1 u" A; c2 ?IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob') }7 U, Y2 }! Q2 y5 ?% j
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';6 R0 i) N1 T5 P
GO( v1 K% i' P$ Z; E" h/ x4 i. Y; l
3 }$ m, o" `4 G) _/ I% B4 x
-- 创建新的作业
! l% F! U5 B/ o+ Z9 [2 \1 \2 P vEXEC sp_add_job / t% J# G; x2 k1 o
@job_name = N'IncreaseUserCashJob', -- 作业名称+ {) r) E( A6 k7 E7 B" i8 h
@enabled = 1, -- 启用作业, u* H. Y$ e. x6 f: P7 q- q
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改, F+ M" y% g1 O4 }" ~0 i1 x" K
@notify_level_email = 0, -- 不发送电子邮件通知% [1 K W/ ~, a$ ]8 S1 }
@notify_level_netsend = 0, -- 不发送网络消息通知
; B4 i6 @! Z7 u: s7 w/ ? @notify_level_page = 0, -- 不发送寻呼通知: w# a/ g ^7 s% [" ^ T, K
@delete_level = 0, -- 不自动删除作业
7 u9 K" ]% ^8 f% b x+ A1 | @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
X+ S# D) z1 j& J @category_name = N'[Uncategorized (Local)]', -- 作业类别
- j5 Z1 ^2 @- `! M3 _ @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
% f) y1 t1 N5 L1 ` @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
$ \/ l3 ?( J; q+ F7 NGO0 J( k2 Z! @, r9 L- B
) ]8 [/ Z$ Q3 D& b$ R-- 为作业添加一个步骤+ R3 T3 v! W; Q% U# f1 \+ k
EXEC sp_add_jobstep , }' o# O( q7 w$ e. D6 k
@job_name = N'IncreaseUserCashJob', -- 作业名称
2 G( K$ e. ~3 S8 U* m* K @step_name = N'ExecuteStoredProcedure', -- 步骤名称( K" M( ^$ f* d; ~
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
& e' K& g5 o% j' \8 r1 ]' Z @database_name = N'account', -- 指定数据库名称. v( l& I D3 x
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
9 O8 r; r& _( x& E" `& @ @retry_attempts = 5, -- 重试次数5 h2 R) Z' o3 c
@retry_interval = 5; -- 重试间隔(分钟)$ H- h! @/ I5 r5 K* V# a
GO
% b* m% X2 s, v; I4 X4 ^6 f
4 s% l, N$ N0 @6 H+ U-- 为作业添加一个每分钟执行一次的调度: V" K2 h8 k1 p0 w( r
EXEC sp_add_schedule ; B2 i6 k6 J& |+ n$ g5 d
@schedule_name = N'MinuteSchedule', -- 调度名称
& l7 m" k8 T/ @' i- | @freq_type = 4, -- 频率类型(4表示每日)/ h y( \7 d9 _, U* O; \& b
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
3 P" A8 A0 k3 g0 |: E @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
/ [7 M; Y+ q ~* V; L t6 e @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
- h0 g( T/ e3 M. ]$ h9 V3 r5 O1 z @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
6 ]* D$ Y) J# [# G' k" G! D- M( ? @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
9 Q3 N; U2 o3 q5 r! Z8 R9 u& k @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)# K& d1 {* F" f/ ]
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟); P/ @8 R; L# j, Q$ F1 K" H
GO- j1 c" d! n) D3 H6 V. L9 _
* n. W3 I1 ~ a9 ]
-- 将作业与调度关联起来$ D5 Y1 c' ? z7 ^2 b4 E2 l
EXEC sp_attach_schedule ; p: }& W# ^. {2 T( y8 \
@job_name = N'IncreaseUserCashJob', -- 作业名称2 J" s3 o" b j2 b
@schedule_name = N'MinuteSchedule'; -- 调度名称' E* x0 s3 q' d7 r5 L. N% b2 K
GO- ^; f% O! F1 U
0 k2 ]3 z% w4 A7 j
-- 提交作业创建到SQL Server Agent1 P ^. Z, X9 n4 A
EXEC sp_add_jobserver
* q2 }* ~! z; ?7 L/ M, S3 a& s( i @job_name = N'IncreaseUserCashJob', -- 作业名称
& F2 q ]4 o4 N& S2 \2 c1 v2 ? ~ @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
6 k+ d$ m7 D7 {% Y/ @GO
$ s, R4 E- Z" A2 F/ [2 v
: W8 \5 N' L1 W& g3 V& [" m( Z4 a& a
' P. T% [! r s4 Z7 L5 U
1 k+ S) S0 c1 v/ }6 I
' O# F# V1 X2 g4 v/ Z% |
7 a1 ]7 N8 k9 c$ c" i: { |
|