高级会员
- 积分
- 867
- 金钱
- 728
- 贡献
- 62
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
: O( Z0 Y, i+ j( SUSE msdb;
8 G! m) U. @+ o4 l* q1 YGO8 g. n6 i8 T: Q% R, w& @$ c
; D% `2 V1 J2 T A# [1 V-- 如果作业已存在,则先删除它
! A; l8 n# _% I2 V1 \( s/ tIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
1 o# @' o4 W1 _( N7 S EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';1 p$ t+ q$ @& ~/ v& S' W
GO6 U4 J7 b7 R# ~& ?' g& l7 H9 e7 P
d x& u3 ?: R: q2 |-- 创建新的作业
- o% ?# B9 \4 b/ iEXEC sp_add_job
e- C/ o/ N4 Z9 z* B. {$ I @job_name = N'IncreaseUserCashJob', -- 作业名称
6 ]9 {4 g* [+ a# \- c& X/ X @enabled = 1, -- 启用作业$ i8 M& B. K5 Z" g: e
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改' E; _4 p/ u% X
@notify_level_email = 0, -- 不发送电子邮件通知
* ^( f2 o6 @) u @notify_level_netsend = 0, -- 不发送网络消息通知
% U: w1 i7 Y* Z. k N" p$ V. T: s* ] @notify_level_page = 0, -- 不发送寻呼通知2 j/ q. y$ |0 X* _: e0 c
@delete_level = 0, -- 不自动删除作业
# `/ |" U' `+ W- Y# J @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述0 o0 S0 w5 n; k- V. E: T
@category_name = N'[Uncategorized (Local)]', -- 作业类别
0 r$ L; N* J8 R* T/ V( ? @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)9 G0 Y$ ~% x& B; j: d5 Y7 }
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员6 M/ ] [% A) H2 g
GO+ m6 F) S/ ]$ w3 O' @9 j2 X
8 y: p; F, T, h( G5 w- o# A" S( ?-- 为作业添加一个步骤
; T8 l8 O- P1 p$ d. Q1 W9 Y/ o$ VEXEC sp_add_jobstep 6 E$ u6 k( ?) a. x; e. d" e
@job_name = N'IncreaseUserCashJob', -- 作业名称
1 [4 |1 g8 ~: a @step_name = N'ExecuteStoredProcedure', -- 步骤名称
2 w! J. T, ]; I) [7 s b @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)9 R I1 Q/ A* Z1 v- b; n7 k' Q7 u# c
@database_name = N'account', -- 指定数据库名称0 Z7 y+ J) \4 n1 q' I3 } ^
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
8 D$ b; T7 a7 L% x' z4 ? @retry_attempts = 5, -- 重试次数
! V; t1 Z, y Q3 {# M @retry_interval = 5; -- 重试间隔(分钟)
; I0 ^7 C; a# ?8 v1 EGO; n3 ]' r5 _9 F& R
, {. ~" @7 m+ K* w; M-- 为作业添加一个每分钟执行一次的调度
/ f X y" I/ [) TEXEC sp_add_schedule 1 t0 a9 }% ]6 ? p
@schedule_name = N'MinuteSchedule', -- 调度名称# ?$ q& E9 k8 Z. s4 Y% d
@freq_type = 4, -- 频率类型(4表示每日)4 j$ G6 H& F1 w9 B+ B
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
6 `0 H, i! B4 U" ]& b @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
6 E4 ~' K1 P! F1 ^$ W3 k @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)* ~1 V3 q6 c7 K
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)3 ^1 O# o% g2 I7 n% r) X- @
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)6 g* L' R" j1 O3 b* y I
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
7 q; u6 ]& Y( q+ K @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
: a( P; R5 _# d OGO3 G' E2 ~) B9 c) k# X7 w
' ~! G: t& L0 I$ T/ M-- 将作业与调度关联起来
6 Z1 H- L+ k' h" }EXEC sp_attach_schedule E3 s; C6 H6 n/ N; X) U
@job_name = N'IncreaseUserCashJob', -- 作业名称
5 F& z0 V% s( O; e0 v' D+ r @schedule_name = N'MinuteSchedule'; -- 调度名称4 y8 [( a! i( i7 o# L* E/ g8 q6 s
GO$ v6 x. g. \+ d: C! {# O6 H( @
. a- A8 e# s7 d' {/ U1 J' Z-- 提交作业创建到SQL Server Agent8 v. U6 @* b: k- l/ ^. [
EXEC sp_add_jobserver
3 }3 e: @0 q! X% M% `8 G @job_name = N'IncreaseUserCashJob', -- 作业名称$ V9 M/ A& f1 Z; {& p
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
2 z* T. y4 @8 ]6 bGO9 U, \, n5 A: {" E0 c+ L& \( I. [
2 \" r: J4 I: C# }; c3 n* k4 v/ b% O1 N0 H+ r3 n
2 `% Q& i: h1 |5 l# Z- c
+ L3 B$ l% g$ k8 G8 P) i4 I3 W) Z) B. u# K; R
|
|