中级会员
- 积分
- 485
- 金钱
- 375
- 贡献
- 36
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
& L9 X9 z; L, f8 l- o- jUSE msdb;
3 X9 l) c! U2 I) L0 LGO+ `0 [, f) E5 C3 k. F+ m
$ g* ?8 J0 A' e& _# r. F-- 如果作业已存在,则先删除它7 J5 Z7 t, d8 b( a- t) S* Y- f; P- ^
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
7 h4 K+ l% D+ i h) t EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';( H: m# D7 z/ a% {
GO3 q) l! H2 g$ w7 q
" o" a8 U8 T, D! ?2 E$ v+ M-- 创建新的作业
* r2 p# E# X4 H* R# L! r* EEXEC sp_add_job
. T% \% k& W0 w: S @job_name = N'IncreaseUserCashJob', -- 作业名称
7 O h V* D7 l1 ~ @enabled = 1, -- 启用作业9 a7 w% S- [( a
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改6 [" L+ y: z/ g$ R
@notify_level_email = 0, -- 不发送电子邮件通知
8 i4 g7 N1 S9 A# ^' \- z @notify_level_netsend = 0, -- 不发送网络消息通知1 q6 E$ P3 l7 t2 C; D7 z. |
@notify_level_page = 0, -- 不发送寻呼通知$ w K& |% G& ^0 }
@delete_level = 0, -- 不自动删除作业) O" A5 t: H! i* [
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
' f- @' R3 r+ {* d E @category_name = N'[Uncategorized (Local)]', -- 作业类别
1 V w& v6 u: ?8 n3 d# z @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)3 {. i& _- z5 j, }- A* M
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员" p: m9 y7 @! U N7 u- u& o' @1 U6 S
GO. C4 G" U6 |/ o- X8 D. `5 ^+ g, a
' D% P/ P, }" d. [, Z5 F-- 为作业添加一个步骤) _- W3 y2 @1 V/ k" e. @
EXEC sp_add_jobstep
1 u/ o I8 e: d' `7 |4 O0 s @job_name = N'IncreaseUserCashJob', -- 作业名称
5 H. i' C, _% h) P) b @step_name = N'ExecuteStoredProcedure', -- 步骤名称% g# d% P0 C( }% x/ i1 Z) S! k2 ~
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL) c" _/ {- U' i9 D0 L
@database_name = N'account', -- 指定数据库名称
' j7 U2 t: e5 h @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
$ O5 U1 j7 c3 j9 B X @retry_attempts = 5, -- 重试次数
- H& h% c/ M4 v. r/ _9 w @retry_interval = 5; -- 重试间隔(分钟)3 t) F# J7 N' U ~% d
GO
+ k2 ?% o3 M5 S9 M+ r: M, i7 n \6 e
-- 为作业添加一个每分钟执行一次的调度- s# \0 h O o, ^
EXEC sp_add_schedule
0 b0 h% H$ F g8 C! b4 Z7 O @schedule_name = N'MinuteSchedule', -- 调度名称
3 o& e, k K7 q' w @freq_type = 4, -- 频率类型(4表示每日)
% t# G' c' }* h' H, e' u# L4 } @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行9 A! c6 H3 y0 @& }- {
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)- I. v4 k5 t, i+ R' c1 Y! E0 j# a3 Q' l
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
+ C" w$ g/ j! O @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
3 ~9 X, L4 {0 J3 s @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)- x) q7 O6 F6 P d
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
0 a" a2 `; R: ?, w1 d9 c; [ @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
3 x$ N( [ |' p/ [4 a& B) GGO
, h9 ~7 ?+ ^, N e6 ]2 h( I; \' ^9 j$ C5 _
-- 将作业与调度关联起来0 C; _/ |: [' b" b c$ x* P
EXEC sp_attach_schedule
- T- O/ B% N* q) W( F5 e @job_name = N'IncreaseUserCashJob', -- 作业名称8 X3 M3 e" B+ x$ p3 F, B" V, S. e6 l
@schedule_name = N'MinuteSchedule'; -- 调度名称
# x' Z5 b1 r; X4 WGO
" ^: b9 V- A( w, s' N, }. W/ i, F+ [7 V" ^: }1 J0 e
-- 提交作业创建到SQL Server Agent
" p+ j; f9 d# h1 }EXEC sp_add_jobserver 1 G* d1 d4 j) T& G
@job_name = N'IncreaseUserCashJob', -- 作业名称9 ?+ T, u2 D9 ^/ S5 g$ h; n4 Z
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')9 D5 w' h" X/ S# P
GO5 [* e8 y1 Y3 {- b$ e- g: M
5 x* r# b) p! Y
) F3 _/ @1 u/ z" F7 T3 Y+ m0 ?
1 T7 o" }8 N# z3 j
: |3 T ?( g1 D+ w5 ?" n
' \% p& E* N$ K+ U9 R |
|