高级会员
- 积分
- 891
- 金钱
- 742
- 贡献
- 72
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
6 l$ ~6 J, \3 O( ]+ t) VUSE msdb;
+ E1 {* Y8 i5 S Q: \GO
' ~4 C O i0 _6 M! _
) D$ l/ z6 v: e1 {0 l! [-- 如果作业已存在,则先删除它/ i3 q" N! o+ S1 ^
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob') U, I7 i2 O3 y9 y7 R
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
7 J6 C1 V2 t: y" A3 }, o$ jGO
& Q$ b1 {: r3 _' Z) Y: i! F# Z* R) v: k* y' k$ v- F1 `
-- 创建新的作业
* |9 n$ T! h* y) h$ I( zEXEC sp_add_job - X# f T# j6 S! ]0 L
@job_name = N'IncreaseUserCashJob', -- 作业名称
* h, e' P5 A7 z @enabled = 1, -- 启用作业
; B% m+ c, n3 g- n! ?4 z5 z @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改, Z( r5 [* @* X* _: Y- h) q4 Y
@notify_level_email = 0, -- 不发送电子邮件通知
8 k! W A9 |7 e3 h @notify_level_netsend = 0, -- 不发送网络消息通知
3 l+ }( Q7 V/ D* s- a3 F. P @notify_level_page = 0, -- 不发送寻呼通知* `6 G, K+ q/ n, c! `! Y' ^7 F
@delete_level = 0, -- 不自动删除作业( l1 h) X, R; M! {' ^3 {& b
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
$ X$ h% l& e0 H& b' A5 d9 ^9 _ @category_name = N'[Uncategorized (Local)]', -- 作业类别
9 e: A$ t+ W% f: ?- w; E @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
2 I, x+ k- t* w' r7 Z @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员1 |9 |2 ]* N/ |" \0 q
GO6 ~. }7 U% F# f% d# u3 l
7 i" ^9 O- H1 A4 U! f3 H
-- 为作业添加一个步骤
7 u/ ^& w7 a/ xEXEC sp_add_jobstep
; @2 U e Q8 H7 {! _; w% H @job_name = N'IncreaseUserCashJob', -- 作业名称
. I9 U/ i& R" m U) w2 Y @step_name = N'ExecuteStoredProcedure', -- 步骤名称& t& i+ S" C! Z' F. M& l1 Y' C* ?# X( A
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)) }+ m1 a/ K+ U; u8 x
@database_name = N'account', -- 指定数据库名称
7 x; \- V5 L; U- D# O5 `. ^9 ~' S @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
; X. N+ l& S1 `9 C0 b: L7 X' K @retry_attempts = 5, -- 重试次数
" S7 `8 Y- S+ B2 G1 V @retry_interval = 5; -- 重试间隔(分钟)0 ~# ]8 L5 f+ W- w8 S3 f5 T1 c
GO
; u! M% x3 l% k) r( w& e6 J
- e4 u _: R$ [-- 为作业添加一个每分钟执行一次的调度
9 u0 D# ^2 S' x4 ZEXEC sp_add_schedule
$ A. m, j1 U: i {; j* u/ H$ C( H5 \ @schedule_name = N'MinuteSchedule', -- 调度名称
6 P8 T% ^4 _+ y; ~7 r! X9 J @freq_type = 4, -- 频率类型(4表示每日)
: \ Z& |. L* \/ z$ M$ j; B! ~7 e @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
- a Y/ U. r0 z2 V8 W @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
( p& n; K3 S6 S4 d" v7 b7 V @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
+ D0 f: W$ T' _1 v* U8 @. i @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)! N9 `7 ?& N/ f
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
! w- L# R/ y6 q- Y/ a @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)5 {7 N( ? @4 h$ U0 X. e
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
5 L* I! _6 Q3 v# M* I, t/ z6 JGO
7 l7 }7 {" \. X4 j: K; b
& j- H) K7 m% H& E8 [- w* f-- 将作业与调度关联起来
5 B, J; C2 E/ y Q1 x5 D; fEXEC sp_attach_schedule
# [: i% z4 z$ x @job_name = N'IncreaseUserCashJob', -- 作业名称0 ]* ]! B1 O) x5 \
@schedule_name = N'MinuteSchedule'; -- 调度名称: E9 O' t5 ]% ?4 }
GO
y! }- \! T2 x; Y! n) O& x
7 J7 I7 F. i; N( r7 J7 q( P Z3 i-- 提交作业创建到SQL Server Agent4 q) ^. ]7 C5 F! _
EXEC sp_add_jobserver
8 p7 `8 |, }5 C; I& l @job_name = N'IncreaseUserCashJob', -- 作业名称
5 C: @" J9 e/ H/ U2 T0 I2 d @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
2 [6 e# x; U0 Z, J; g$ P$ MGO
$ F$ }3 O. x8 ~; B& H' g9 ~) a' j8 E, f9 t @" x
1 H) F3 @& s+ O. k0 y$ J; V! Q& E3 P/ u
$ L+ |0 @. ^$ i, h
; A. B# _6 {3 \+ C |
|