高级会员
- 积分
- 786
- 金钱
- 654
- 贡献
- 55
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
* C( t+ s$ d2 @' |0 ] AUSE msdb;
7 O9 P9 _* c! b- G% h& QGO
$ w' b, X6 c/ N* O, e, l* O
# Q$ A0 h7 M: T( w-- 如果作业已存在,则先删除它, f' v4 {8 i9 ?
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
6 U7 ?( C }4 ?& r5 n* F5 b EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';( Q; c! Q0 [5 o) Z1 r1 x' m2 V. m0 F
GO
5 L G+ {3 ]; V- |2 u' G) P |, X. x
-- 创建新的作业4 ~7 @: T) k$ |5 ~7 Z2 B, z* r
EXEC sp_add_job
% B& r/ Q. R( c M8 d* p# z, S @job_name = N'IncreaseUserCashJob', -- 作业名称
) s2 J$ o% Y! N: S* U; w. R r @enabled = 1, -- 启用作业6 N7 t( d8 ?* P# C+ x( G$ f
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
4 u8 b `2 Z7 f1 z @notify_level_email = 0, -- 不发送电子邮件通知
p& A( t' g8 C# s @notify_level_netsend = 0, -- 不发送网络消息通知
0 l y6 Y+ T1 S1 l* `' }, k' ` @notify_level_page = 0, -- 不发送寻呼通知7 R% |: a6 {- R2 f! ^
@delete_level = 0, -- 不自动删除作业
! S% c, c. M" u! `" p) f1 A @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
! c0 h/ @! A. A& K4 | @category_name = N'[Uncategorized (Local)]', -- 作业类别2 g4 Z4 x9 |8 f4 L
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)7 \1 H) ?2 k. l( O; E% ?
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员/ I$ n4 M. S: N# l9 F$ _# E
GO( M$ f* c7 T$ s2 ^7 A
2 ^0 {5 N, O* F% w
-- 为作业添加一个步骤
6 J2 w7 ~* ~- J# y1 q- dEXEC sp_add_jobstep - }5 z/ Z. B& d
@job_name = N'IncreaseUserCashJob', -- 作业名称- L$ U0 N2 X9 b* t$ K1 q
@step_name = N'ExecuteStoredProcedure', -- 步骤名称$ ~) S$ b J9 ~) P; Y
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
6 g+ E4 u1 f' s0 v2 K- O: `* E( X @database_name = N'account', -- 指定数据库名称
/ x( ^& }0 z X* S2 R @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)( u# l! z: M: U6 X6 B6 M1 J; I6 z! y
@retry_attempts = 5, -- 重试次数6 S) `: r5 S( x& z
@retry_interval = 5; -- 重试间隔(分钟)' c* E+ o4 `3 ?3 J- r
GO2 x3 g$ {! p1 { ?/ f
) m4 p8 M, X) q' n0 ]# c- ]* R-- 为作业添加一个每分钟执行一次的调度
( \5 s) V2 G7 w% A* W) s- L9 AEXEC sp_add_schedule
' A; v2 L( ]# U& E @schedule_name = N'MinuteSchedule', -- 调度名称
0 }0 T7 `: e. C" |7 g5 n @freq_type = 4, -- 频率类型(4表示每日)' Q' X+ A: [" F- t; `8 P
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行; y( P4 ?/ C7 ?4 j3 t n
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)' B- G$ e1 W' t5 Z
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)( [- L6 N+ u8 U) ]
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)% E1 |# `0 Q, _2 v8 Q/ t& z7 W4 l
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
; R# }1 |8 F8 D. w$ z @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)$ V- e1 s* w. D$ s* J# c
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
) c) y, S) n$ z4 Z8 \GO) C' @ J2 ?, ?" O. M& ]# ?. d
: y7 ~9 ^5 y& l5 i( N% F-- 将作业与调度关联起来! p9 |$ s& ?( O
EXEC sp_attach_schedule - H, I# ~' y5 ^% I D
@job_name = N'IncreaseUserCashJob', -- 作业名称3 C. @: p+ r* d G9 P- H
@schedule_name = N'MinuteSchedule'; -- 调度名称
! [! c5 O' a2 w$ HGO
% W+ q3 C( k( L8 l% V1 z
- w6 q- g6 H m% V( t/ t" a-- 提交作业创建到SQL Server Agent0 r, j7 B2 z, ]% v, X- Q
EXEC sp_add_jobserver # E G6 }9 R2 W" Z: A
@job_name = N'IncreaseUserCashJob', -- 作业名称
8 ~: y3 t1 b: e1 q, j; l/ A @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')- F4 v) Z5 X) K1 E- t' M
GO
$ p: O: S0 Z* _3 e5 p
5 ^3 ^) _! o/ w3 F; l7 ^. Z. `) L) D5 o8 ^! J
O$ W, w7 s/ }7 e. j# q& o$ J0 _! ]
, R) b$ M1 }2 |) ~+ B" k
% o* _6 F* i$ l" {5 [9 d
|
|