高级会员
- 积分
- 870
- 金钱
- 730
- 贡献
- 63
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------& p1 D1 e% ^6 u. t
USE msdb;4 C8 e" @) _! @' T$ |
GO" V. G/ B' v& T5 i
( t8 P7 }% Y: H, M-- 如果作业已存在,则先删除它 ~! `- }+ x: O. n5 t" I5 a
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob'), j! i$ ]* S/ K S3 Q: {' E; v* i
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';" t9 H# C1 W# p6 [, R: {* n# r
GO" P: F/ O# [( z8 k
0 E+ A+ M& ~/ z+ y0 { H9 e-- 创建新的作业
, @8 F' c( T/ E3 tEXEC sp_add_job
. c7 h5 A7 M" [9 L! w# b @job_name = N'IncreaseUserCashJob', -- 作业名称
# c* `* I3 q8 c/ T1 t( C @enabled = 1, -- 启用作业
s) z, n5 ]7 m7 |; y @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改0 k6 K4 B0 i( i" h2 r* F2 f- E
@notify_level_email = 0, -- 不发送电子邮件通知
1 [8 f% z7 W: A* ]5 v6 B4 h, J* A @notify_level_netsend = 0, -- 不发送网络消息通知- r( W4 X" F* m. |
@notify_level_page = 0, -- 不发送寻呼通知6 U) {* a+ p/ b( B$ C, l6 O0 ^( C' B
@delete_level = 0, -- 不自动删除作业7 Y0 G; m3 @4 q" X( a: E
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
$ D0 r( `2 @0 t; @9 e8 `. u# R @category_name = N'[Uncategorized (Local)]', -- 作业类别
) @0 V" L5 o) T8 |9 { }3 Z @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
# D/ U) h. a O' V r! ?% w2 _& R% ` @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员" N) N" k, J) ~. F+ H, I
GO0 F {7 H* B# `) @. T
, `* m2 f5 r& u# t- |3 @
-- 为作业添加一个步骤7 }! I$ K5 ]5 ~. ^# q
EXEC sp_add_jobstep
. r3 X. i' d4 q @job_name = N'IncreaseUserCashJob', -- 作业名称
% [4 `# I' }1 Y, I @step_name = N'ExecuteStoredProcedure', -- 步骤名称# O/ E) ~' Q3 w- [- \
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)( E7 ?5 j: }" J1 V. N% d
@database_name = N'account', -- 指定数据库名称
: z6 F) H! J% L2 r4 K5 W0 n/ P2 O% N: Z @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
' H) ~ q9 \3 m! { @retry_attempts = 5, -- 重试次数
1 {& G8 M: Y4 L+ [ @retry_interval = 5; -- 重试间隔(分钟)
# J; j H3 f2 Z; n, IGO2 Z$ g d" T% |6 g& ]$ K+ g* X
; Q% N4 \. I; o( V. i-- 为作业添加一个每分钟执行一次的调度' j8 P' u4 u v! w9 t! ^/ ~( a: L3 t
EXEC sp_add_schedule 9 V/ G* k2 v! L8 q' B' s2 w( g8 S
@schedule_name = N'MinuteSchedule', -- 调度名称4 r7 W! Z$ s' v- p! X
@freq_type = 4, -- 频率类型(4表示每日)
. w7 n0 O7 v& d9 B7 D @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行; G6 t( P5 Q! T% c2 O0 i! x
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)9 A; K8 c# Q; t y7 ~( r" K
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)1 k) C: H. T1 U6 M
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD), i7 H* i m, q. M6 L8 _
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
: d x0 R8 d" v1 k/ G# Y @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
! O, T+ i& ?- P9 c$ z! n1 [ @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)- B9 v$ R) v+ c$ s( n& Y
GO
7 ]5 j0 h$ l* O) U
$ G/ N2 e/ y$ j5 ]5 h3 S-- 将作业与调度关联起来1 {6 J) i6 K9 L% r1 }" S. V
EXEC sp_attach_schedule 6 i4 m- _2 ?8 f. |5 z( e* U4 f8 x
@job_name = N'IncreaseUserCashJob', -- 作业名称/ O: e3 {4 B) y! B W4 `
@schedule_name = N'MinuteSchedule'; -- 调度名称
- c q7 y% a5 Y% bGO3 }* G- n2 V* g% Q
" v, q E4 h1 B1 y% j0 n-- 提交作业创建到SQL Server Agent
8 [) B4 |% s' }2 l' |: uEXEC sp_add_jobserver
# L1 a% z! p0 M8 _2 Y0 h @job_name = N'IncreaseUserCashJob', -- 作业名称$ s5 s1 N3 j" N: e1 i' b, R) D1 t
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')" `) `1 G5 B8 ^% H8 L
GO
( o# X4 J# L: |6 F2 R, K5 [3 E
x9 b m; l" f5 a
9 V2 Z1 x+ }1 P& w9 H1 o
( g) q" E* e* E4 v8 t. V$ x& }2 [0 ?
|
|