中级会员
- 积分
- 303
- 金钱
- 207
- 贡献
- 22
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------% M0 N( C$ u% F! h# n$ P
USE msdb;8 X3 w. y( O% ?" m) _) y
GO# {8 w% M. Y3 N7 v+ H- @! S
- Z- F( ~8 D/ B) }' o- r-- 如果作业已存在,则先删除它
7 u/ f% M2 k% R! x% a+ S/ D kIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')7 O g' U. ]7 |/ j6 }
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
' Z G2 c: w% `GO- Y/ E5 V ~4 z# p7 M
$ E: d1 j0 U( J) k6 x-- 创建新的作业
" W! U+ q5 L2 ?4 p5 S4 t+ EEXEC sp_add_job : {- l- Z/ x# r( g r% A
@job_name = N'IncreaseUserCashJob', -- 作业名称
# A5 k+ v9 G, d7 J @enabled = 1, -- 启用作业2 q+ Q- |( \8 @3 _
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改7 {. x$ n3 I. F1 h* M' ^
@notify_level_email = 0, -- 不发送电子邮件通知
0 H8 u, Z/ k. Q @notify_level_netsend = 0, -- 不发送网络消息通知- L2 p/ ]: B2 [0 n7 ^5 H8 d
@notify_level_page = 0, -- 不发送寻呼通知 C1 v/ D; H# l/ l
@delete_level = 0, -- 不自动删除作业
( ?1 y! k' m) [ @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述" q# v5 r3 V) c* W# ^! s4 |; R+ r
@category_name = N'[Uncategorized (Local)]', -- 作业类别
Z9 O* V( J6 B# ? @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)' z/ g4 O1 D: k) b4 Z
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
. N* ?# n: U8 y# n$ JGO2 j& i% H9 y Y4 W
" r: U$ R7 y2 k$ c' A) {-- 为作业添加一个步骤
O" h3 @1 d# o8 LEXEC sp_add_jobstep ! A) J' c* G9 _7 v' e
@job_name = N'IncreaseUserCashJob', -- 作业名称7 k& l8 i3 W. I* Y' V, g
@step_name = N'ExecuteStoredProcedure', -- 步骤名称2 K) b' w2 E( `* F- h
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)1 B3 q5 R4 V) }% {- S3 r
@database_name = N'account', -- 指定数据库名称
9 T) J/ L" ^* u5 ?5 d- R @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
1 i( _0 _ s- B( o @retry_attempts = 5, -- 重试次数2 a. [6 y9 q" l& U& ~3 @
@retry_interval = 5; -- 重试间隔(分钟)0 h2 N# K. _! i) k8 Z5 y4 ^- A
GO- p9 ^8 ^9 \2 w6 O; ~
" b7 i7 c# H8 x8 T I
-- 为作业添加一个每分钟执行一次的调度
. _! x8 q" R1 k% KEXEC sp_add_schedule
. Q$ K$ O1 \% ]: o* h& q* O- `# y' F& Y @schedule_name = N'MinuteSchedule', -- 调度名称 I* j8 W% Z9 l+ @# O
@freq_type = 4, -- 频率类型(4表示每日): g0 g9 ?) D" H
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行9 o) I9 `! f! L" G1 N8 ~
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)& ?# }; y" P) f# f& B
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)9 R( D# t: ~5 [* y
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
; S& g, v8 S% b$ | @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)9 O/ q% w7 ~, `* b& X) q \
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
4 W; V9 V- c+ Y0 [ @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
2 W* C, F* T6 k& uGO2 u9 S j$ t) h% ]5 D' D# W, i' F
! ?* }) @" v% A- v8 y-- 将作业与调度关联起来/ a/ |# p {; P' o6 D5 v# S
EXEC sp_attach_schedule
- A0 U" [3 u* s* Y7 B @job_name = N'IncreaseUserCashJob', -- 作业名称
, x5 n l& w b0 W4 @& X @schedule_name = N'MinuteSchedule'; -- 调度名称3 J: N7 N* G& M' q$ P& o3 d. R
GO
" ^- ?) |( N0 B( [* ^; C' @ c
O x2 B" R. P/ T3 @- X-- 提交作业创建到SQL Server Agent
! v# Q' v- U+ S7 a) r) `EXEC sp_add_jobserver & k/ }$ d( ~3 j2 R0 {
@job_name = N'IncreaseUserCashJob', -- 作业名称0 w: {- ?+ n {9 D
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)'), ], e3 t1 Q. ?0 C$ n
GO: J% y) A1 ?' V: g9 t9 y& Y
4 b; W0 l, U/ o& E# R* w/ |7 g Q5 ]8 ?
* X6 q# m) A: `8 T& n
% l/ J( ~) n- i
! w) c8 L8 t2 }
|
|