高级会员
- 积分
- 838
- 金钱
- 702
- 贡献
- 59
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
, ~2 g( Q% Z6 ^ W! v, A- i; N+ VUSE msdb;2 w: r' I1 w5 n/ n
GO
; e8 O( W5 L+ ?5 D6 q
# i' X7 f; L6 \$ N! ~1 G7 T/ O-- 如果作业已存在,则先删除它
4 I/ f+ U4 z f# U0 ]IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')/ p% d: G" N8 G( X: X6 h5 w
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
/ A8 Q- o" b) f: a3 u# ^% T' cGO, e. g4 ~ v$ c4 f |
( C: l- R2 x# @+ S. K0 j4 N-- 创建新的作业0 F/ I. G8 ^4 f' Y& R
EXEC sp_add_job - S# T8 d: |* `: D7 b
@job_name = N'IncreaseUserCashJob', -- 作业名称, @8 I) V$ j2 B
@enabled = 1, -- 启用作业$ T3 ^0 z1 Q1 o/ D
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
' ?; w& ]2 @) I( e! n @notify_level_email = 0, -- 不发送电子邮件通知- b! z' B9 @% R
@notify_level_netsend = 0, -- 不发送网络消息通知& P. {( K4 t. C
@notify_level_page = 0, -- 不发送寻呼通知& Q: m4 h. d2 c$ v$ a9 m
@delete_level = 0, -- 不自动删除作业
5 X' d0 n/ D% k7 a @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
. H& y' _. M0 L @category_name = N'[Uncategorized (Local)]', -- 作业类别9 m" E& \2 ]: j
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名). W! s# s/ ?9 o7 F3 q
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
7 f* n" A( Q* S8 a( S% `GO
- Z, H" z4 B& u: }2 X0 H1 X: t" m0 \
2 z$ j% S: a8 \-- 为作业添加一个步骤1 A- s2 z* z. z: u ~
EXEC sp_add_jobstep 4 m# {: X0 t1 e2 w% h& U4 Y
@job_name = N'IncreaseUserCashJob', -- 作业名称
9 [7 e2 J- V. ^% V1 y0 H- f3 Q9 h" h @step_name = N'ExecuteStoredProcedure', -- 步骤名称& H* c- G6 S; W9 k
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
* ~2 H: m$ T/ p- X, ?6 t @database_name = N'account', -- 指定数据库名称
) A- p( |; c9 y" | @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)& n/ ^" ~" S" D! N3 J/ N. h
@retry_attempts = 5, -- 重试次数9 m, x3 V- D3 g3 j* f) N) h/ a
@retry_interval = 5; -- 重试间隔(分钟)
1 j, N$ e) e3 v7 N3 nGO
% ?, m, ^; I4 G5 t4 F
' @5 r2 [ }) E/ x% Z( u-- 为作业添加一个每分钟执行一次的调度
0 t, v# k' |; Z# BEXEC sp_add_schedule
7 c/ K, f* O- d+ i1 Y @schedule_name = N'MinuteSchedule', -- 调度名称
" I, E7 X% t3 \ ]/ m* y @freq_type = 4, -- 频率类型(4表示每日)
5 k7 W- V2 y5 {& J0 a3 r* e# I; n @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行" H1 _) B+ t$ w+ g+ s
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)
4 I+ ^+ t4 p+ C @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)$ k+ Q1 b0 X5 p* u3 _/ g
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
" t2 p4 E" n; Q @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
2 U, ?9 \6 M3 }" q @ @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
0 ]* S( S+ w& `: j% U' e' P @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟); _! I I8 ?" h% o Y% F* M
GO
8 u8 o. t7 d6 p- C* ]7 i4 A
6 a0 k- v: E4 F3 H-- 将作业与调度关联起来
4 ~, M7 h2 j; X, i+ {1 LEXEC sp_attach_schedule
& o# y [/ I+ V' [5 F @job_name = N'IncreaseUserCashJob', -- 作业名称
" B% g( ~0 ?$ M, H c @schedule_name = N'MinuteSchedule'; -- 调度名称+ z7 E) r: B. H; L3 q8 o* `7 ]' H" l- K
GO
. d/ |3 v: \: d" O) `$ |1 I& H+ `, \8 R& J" D
-- 提交作业创建到SQL Server Agent
0 d7 j" F7 s5 ~EXEC sp_add_jobserver
6 Z9 M9 Q8 s0 [2 K/ \! N" i4 ~ @job_name = N'IncreaseUserCashJob', -- 作业名称* G% |" u+ J* g( ?: y6 J7 Z8 m& M& [
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
' {& @, z1 \' s# C( J( P/ VGO2 H2 S- S$ k; N9 a7 Z- [- T5 `5 O
" k8 X- c8 f) A/ @" F. t
% h( Q0 l0 Y! O, y+ X
- s+ d& A1 u2 j! S' {' U- `) C
, D: h0 {) a3 z |
|