高级会员
- 积分
- 870
- 金钱
- 730
- 贡献
- 63
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------! e$ f" D7 n! ?1 }
USE msdb;
3 b5 k) W& |& N( k# YGO
: j a$ ]6 g4 a# k+ C4 ^: p% r$ C6 |( a
-- 如果作业已存在,则先删除它+ V3 H4 t- U9 d6 z
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')9 O- n- C9 V5 B4 n( O
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';3 Z, B! I) n" O1 o0 u4 v
GO% U a8 \. @( @( ~$ W# B
4 M9 _1 y6 T8 Z1 ^1 m# S% k
-- 创建新的作业
% [; c: t. x3 h. w; a9 UEXEC sp_add_job 3 c3 s/ {" N# B. G ~. I4 S2 U
@job_name = N'IncreaseUserCashJob', -- 作业名称1 F, b. f1 d+ o
@enabled = 1, -- 启用作业
5 L6 Z* ]) d6 i+ n$ d8 H @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
8 t5 ~1 S. Z" G) v6 p @notify_level_email = 0, -- 不发送电子邮件通知, M) G" J9 x D8 F/ d7 S3 p0 T; Z6 R
@notify_level_netsend = 0, -- 不发送网络消息通知9 S/ s0 F& @/ ^& ` _5 P# N! Y( I
@notify_level_page = 0, -- 不发送寻呼通知
* {) H6 I3 l) I+ h- C @delete_level = 0, -- 不自动删除作业6 k6 c- r. R3 x- C, U4 }) A
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
1 q- t( |2 q, v' ]% s1 _. d @category_name = N'[Uncategorized (Local)]', -- 作业类别( f; L5 N6 G, d( q' V! F5 d) ~
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)! k* ~% j! R; [; f7 I/ n
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员0 m9 C- n& P7 [) ~% } Q
GO' g; d- k+ c+ B! K' U
0 _( V: D4 U/ h( u7 R' J. y-- 为作业添加一个步骤
5 Y$ D) i% z% d* H% uEXEC sp_add_jobstep
2 C0 a# o, s& c9 I6 M1 h @job_name = N'IncreaseUserCashJob', -- 作业名称. q3 Q" Q: f9 j. j# `
@step_name = N'ExecuteStoredProcedure', -- 步骤名称$ ^) e% e5 k4 r, \
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
+ L1 K) V, f" P @database_name = N'account', -- 指定数据库名称
v4 k5 T0 `1 v# v3 m @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)8 H c% J# w2 y$ S- j
@retry_attempts = 5, -- 重试次数
8 L( E4 E! w, d" O8 Q" Y @retry_interval = 5; -- 重试间隔(分钟)( ~: x4 T5 s) q% p ]
GO0 }0 r! u* o @7 _9 q
( f$ G8 ?% y+ r$ K6 B% M% w- e: X( F-- 为作业添加一个每分钟执行一次的调度
( [4 q3 o( a( Q$ UEXEC sp_add_schedule
/ t' |) }$ f, h, D; ` @schedule_name = N'MinuteSchedule', -- 调度名称
4 O: \ x& E+ n8 Z2 t5 x( A& `+ N @freq_type = 4, -- 频率类型(4表示每日): m: D U6 q" K# @( h1 q6 u
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行9 s* _2 _% ]: j7 w) T
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
) P, C6 O1 x! z' G, y @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
/ A ^( a4 n' P4 h- E @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)8 d5 r8 X' f, F3 p& I5 x
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
, c1 Y) k6 _/ V9 H& F @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)+ C d( G9 H4 @9 E2 T1 X. ^3 s7 J
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
; a* H% D [" Q2 F* tGO1 Z$ u$ U) r! j
& H5 I0 M7 t+ @/ n-- 将作业与调度关联起来
+ n* n% N# F% e( W2 w7 [EXEC sp_attach_schedule : N5 R+ [" G( `# F8 S) c
@job_name = N'IncreaseUserCashJob', -- 作业名称- k# k, | i4 Y; w. H% z/ z
@schedule_name = N'MinuteSchedule'; -- 调度名称! y. i( j0 U0 F' q% O9 X
GO
+ }& b' }% j4 J7 A; U7 _* r9 B* ]; j
-- 提交作业创建到SQL Server Agent
6 ?, J/ a% Z2 i* }EXEC sp_add_jobserver
h8 C) W5 A: q4 V% I3 P @job_name = N'IncreaseUserCashJob', -- 作业名称
$ d0 L# x9 ]6 Y* y1 i. w @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')9 x' `$ g4 v1 n( b' `" e1 F
GO
* s5 j0 w* X4 L8 o$ y2 U* {1 m7 [/ {) w
& {' {$ g+ K @2 v1 f
/ p: m- R: E' ?6 M+ P; ]- y, I9 v" G2 X& L r
& I( H- ` b7 x) t- q, V
|
|