高级会员
- 积分
- 854
- 金钱
- 716
- 贡献
- 61
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------5 H. m, H7 W( L7 b2 l
USE msdb;5 S7 S6 a( f/ {* I: U
GO8 y" a* f' L! R3 C; |/ f. |* D
) b5 }" I7 f7 A! D-- 如果作业已存在,则先删除它
, I0 r+ Q1 n/ Y) X4 u7 G1 cIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
) A" _ j0 \7 N EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
1 x! c# y/ g1 u2 y# \8 q7 WGO3 \1 K3 A1 G w# y- h4 F- y
/ V8 A' U8 s$ B
-- 创建新的作业
8 _1 O) \4 w) t. m- ?# _0 R( sEXEC sp_add_job
2 G/ k* a- k! q- W z @job_name = N'IncreaseUserCashJob', -- 作业名称
7 r8 k5 Y/ `! ?% N9 f: o, d @enabled = 1, -- 启用作业/ j6 s( p! U) ]* `" b
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改9 E! G0 a0 C; B' k2 X' d3 {. Z
@notify_level_email = 0, -- 不发送电子邮件通知: m" `% k/ u& t" i4 q$ j. t$ ?% u% p
@notify_level_netsend = 0, -- 不发送网络消息通知+ l, P) {: A# Q. H: E
@notify_level_page = 0, -- 不发送寻呼通知/ @$ w. k% r5 s% V- K
@delete_level = 0, -- 不自动删除作业
9 Z* ^) V- T3 g! c @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
; K1 _' A0 H4 u' q: d/ X, o* f @category_name = N'[Uncategorized (Local)]', -- 作业类别6 i8 L/ u$ ]9 d( a" a( G
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
1 b8 `" L' L) i6 |1 h/ a0 J: h) ] @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员) @/ t( o3 N+ N1 V" C/ S
GO
/ h9 C4 I+ F9 A, S; }7 P [3 U/ y- z$ H
-- 为作业添加一个步骤
/ P& E3 V6 T. P$ U6 p. d$ o; k2 M$ xEXEC sp_add_jobstep
/ t' M& N; s1 p+ R9 p, \ q l# t; n @job_name = N'IncreaseUserCashJob', -- 作业名称, ?# s6 g1 l% e/ N
@step_name = N'ExecuteStoredProcedure', -- 步骤名称! S. ^) n) P1 O
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
. a" a$ |0 U5 i! A! `7 S4 B @database_name = N'account', -- 指定数据库名称6 i. h; |6 P/ Q, I1 K) L
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)2 H6 t; Q }" Y f) n( k; u
@retry_attempts = 5, -- 重试次数
# v2 M" P: K u. B9 o @retry_interval = 5; -- 重试间隔(分钟)
6 L: W; r7 r* G' @( p* x+ YGO4 c. Y$ [& E+ p) }# f- Z" U0 t' @
/ k6 Z" m& p M c
-- 为作业添加一个每分钟执行一次的调度
9 x0 t! M) A+ ?) X& BEXEC sp_add_schedule 9 i/ x8 b$ d4 @1 U
@schedule_name = N'MinuteSchedule', -- 调度名称
: Q5 H9 X' x7 _- S1 J @freq_type = 4, -- 频率类型(4表示每日)$ f* @ d% z! n: R
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行% y# P2 p* K" _% O1 _1 F8 _, k
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)) K& R" p( O, w, C9 M
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)3 G% x$ C$ y5 c4 H7 W8 T
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)$ {. W, q* B6 O9 _! E
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)4 p8 i$ N \+ Z
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期), ~% ]: V8 K! R, Q* u, H
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)$ H& F1 f' S- i- m
GO
7 F6 }, U. X8 T7 |* e5 g& v' S/ I
! ?" B: Q4 o& N; ?2 y9 L* g-- 将作业与调度关联起来
8 o# b5 v" V# m' m4 b& @EXEC sp_attach_schedule % k3 n" K K* l$ }' ^+ j- s
@job_name = N'IncreaseUserCashJob', -- 作业名称
" m. Z/ `2 T. {) q @schedule_name = N'MinuteSchedule'; -- 调度名称
) h+ c2 p1 E3 d H( Y, `GO5 E' j* F2 `8 H. ^. T$ x1 U5 S
. K" P$ Q) x' T k A7 s ^-- 提交作业创建到SQL Server Agent) F" y/ h" U5 \, H2 H7 Q
EXEC sp_add_jobserver
4 X8 U8 g1 j# [" { @job_name = N'IncreaseUserCashJob', -- 作业名称
+ H' R4 h0 Z/ V/ ~6 ~2 w. j @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
3 o3 s. ]! u# C3 I; z, dGO: |7 s! b2 q( V+ q5 d
0 J( F: y) I# f* k
0 Z/ a9 R0 N; \1 H" j- {# r% f3 ^3 [7 W+ M6 _
3 w2 k: Q) s: Y
2 c, y& B% j) }9 [/ D# E$ Q, [0 p |
|