高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------4 ?: Q+ S; U, ]% G
USE msdb;
2 J; t* ^2 j" {# e5 lGO
/ k# @/ V* H: G0 ~! n4 v- Z1 Q! R" h6 s# ?
-- 如果作业已存在,则先删除它2 [% ~- N! @; W# f' `9 z
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
0 n A. r4 D7 j" l# E6 n EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';/ J! l& n ^% q
GO
: @# F0 \3 s1 A" f& ~6 O
; }( q6 R; Z6 [-- 创建新的作业# b5 o' \2 X( y1 _+ v
EXEC sp_add_job
. g D5 s) \$ d4 v/ W. x @job_name = N'IncreaseUserCashJob', -- 作业名称* [) M& Y( ?9 i& _' k0 I$ }
@enabled = 1, -- 启用作业
! D2 @7 \) A( O4 N9 Y @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
! u7 R& a. _& z$ \5 Y @notify_level_email = 0, -- 不发送电子邮件通知4 v$ @/ y. y+ x& c
@notify_level_netsend = 0, -- 不发送网络消息通知& q+ |/ K; b" Z$ B/ C( i3 f& |+ `* M
@notify_level_page = 0, -- 不发送寻呼通知. a8 L: z( k! e: ?
@delete_level = 0, -- 不自动删除作业
2 [' k& q, a' B/ U( a) P2 d5 G @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
* a/ N' E4 f6 Q$ c) c/ v5 _8 K @category_name = N'[Uncategorized (Local)]', -- 作业类别
' }. Y4 B7 C4 g @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)" D+ ]3 L, F) A0 ?; m
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员! b5 r* ^. X n9 ]
GO
, S- y7 H* K3 y1 G/ m; g
# y+ a# r X1 v M-- 为作业添加一个步骤
% T+ T4 s: w6 D- _! [EXEC sp_add_jobstep 9 U; }6 L, R( ]* \ x
@job_name = N'IncreaseUserCashJob', -- 作业名称
8 P+ V! S) y& l9 A& P# S( b0 E* u @step_name = N'ExecuteStoredProcedure', -- 步骤名称
) B7 u, m. X1 d& v+ }. X& R% T @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
" N; }1 D1 W( Z& [' U @database_name = N'account', -- 指定数据库名称
& S. P+ i9 a& H" E2 o2 q) Y @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)9 y# ?; U/ @& ^1 B7 o ?7 @/ L+ L
@retry_attempts = 5, -- 重试次数
) [( z! g4 B$ d- R1 V @retry_interval = 5; -- 重试间隔(分钟)
$ @9 Q7 t) [! r* eGO
0 w0 y1 M# u+ c# ?, q. v- P5 r2 H
-- 为作业添加一个每分钟执行一次的调度, j5 l6 F7 |- x3 v/ | j' s
EXEC sp_add_schedule m* h, @1 s: ]4 X) x
@schedule_name = N'MinuteSchedule', -- 调度名称
" M4 w* [/ X4 ]5 m" S @freq_type = 4, -- 频率类型(4表示每日)- V1 G+ E& N/ j$ K9 M% t
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行7 S% A ^9 F& B* O
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
k+ f4 R2 C" _& }1 v O @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次): A4 A. |( V7 |$ x
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)) C: K, L1 g" k9 }
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
: n8 e O4 M2 b8 V* c @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
: U& d/ I. ^) T: x @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)3 k; O ~ E2 g: }( H' h+ C4 \, A
GO' X) ?: z( ?# @1 h U& o' L) ^
9 {0 h. K v! w0 Q( W" _6 h9 Y-- 将作业与调度关联起来
" h0 L4 { e' s9 l1 V5 hEXEC sp_attach_schedule `1 A- a( P; u# U$ b: @" \! J, q
@job_name = N'IncreaseUserCashJob', -- 作业名称
% |- ~' S: T1 x% U' I7 i: | @schedule_name = N'MinuteSchedule'; -- 调度名称
+ r7 Z* l9 S/ v' ^* ZGO
. Y8 Q9 O& B2 m% x
, R f/ H1 `( N& I& t7 C! X4 q-- 提交作业创建到SQL Server Agent
1 D; m* o1 n* I$ bEXEC sp_add_jobserver
* D8 ]+ G, g, t* y: l5 e @job_name = N'IncreaseUserCashJob', -- 作业名称
. J0 o- e9 r% |2 V @ @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)'), t4 V$ j: v: ~: k$ Y R
GO( B! l( m6 E6 P1 o+ S& @1 v/ k V
# ^& y. S+ \- m; Y5 B4 ?$ H# q
7 q4 H3 Q( m' w* v( J3 F9 n; b% n2 G
; P: N. {+ Z+ c( j' t* H7 s' r$ g
% ]" O0 `8 K1 Y8 ? |
|