高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
6 w; l3 f) S' q |9 P# LUSE msdb;
P. `& U4 D) d5 ^GO
0 o6 S! }/ G/ z% O
w( N0 f$ D8 i" L- d# R-- 如果作业已存在,则先删除它
+ D" @( w# g- i" zIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')+ i$ o; L( s) @" z. j- y% n7 y
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';/ e& c& s6 y) F
GO
! _: g8 p0 v! o% b: j6 I7 L( U+ l, [1 O) O
-- 创建新的作业; }% B, {3 d( k
EXEC sp_add_job
' ` w/ W' |6 C0 V! I) l8 ]8 z* p @job_name = N'IncreaseUserCashJob', -- 作业名称
7 s) ]) T4 s/ w0 E+ a @enabled = 1, -- 启用作业
5 H: j2 n1 k; ^; _7 Q1 u @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
0 \" H. {& E; u. G( [" y/ c% @ @notify_level_email = 0, -- 不发送电子邮件通知
/ F0 v) U$ S! w# x3 I% @ @notify_level_netsend = 0, -- 不发送网络消息通知
' O% W( h0 L$ z, T8 B* X @notify_level_page = 0, -- 不发送寻呼通知4 B) s: V3 N) g
@delete_level = 0, -- 不自动删除作业
3 F8 ^6 A1 i1 ^' H& I @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述$ ]% I# v- l" `3 k
@category_name = N'[Uncategorized (Local)]', -- 作业类别
7 K8 S: u! W# t9 q0 ? @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)1 N4 @/ h$ y# t- D
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员* n$ U7 C) u5 T) ^& H8 X
GO
h/ y" r0 b; o1 D" T4 x' W* ~: k. D
-- 为作业添加一个步骤
2 ?; j1 P1 I" i. ? LEXEC sp_add_jobstep
9 d6 W/ |+ m5 Q! H. E# t @job_name = N'IncreaseUserCashJob', -- 作业名称+ S1 W1 [0 \8 E( c2 G8 m9 i4 m
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
0 K7 n+ z) K4 k o& i0 L3 {; n: H @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
& y* j+ K0 d, \- q2 N& n @database_name = N'account', -- 指定数据库名称
7 N2 G+ g a: R) A% _* S @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
' ] T$ ^/ X% f4 r4 ^; D9 ^ q @retry_attempts = 5, -- 重试次数& L2 d- j6 ^* C5 Y! N( |- v- U
@retry_interval = 5; -- 重试间隔(分钟)$ t0 }* }! `# n
GO8 D _8 _, E* L ?' o
, w: ] ?6 i/ ^ J( t-- 为作业添加一个每分钟执行一次的调度
. U7 N, v' A! k5 r$ @( ^* b- x2 GEXEC sp_add_schedule
' {3 d$ I! k8 z: e* z* n) w1 m @schedule_name = N'MinuteSchedule', -- 调度名称
* B6 [( S+ f3 Z/ O' _ @freq_type = 4, -- 频率类型(4表示每日): C# o" }4 y- h& L
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
. G8 I+ `4 e" M" [ @freq_subday_type = 4, -- 子日频率类型(4表示分钟)% }! |8 b. F* \ a/ E5 f, O9 [" c
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
; l& g/ Q" `1 G @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD). a% C. M: D1 F6 X! k0 m
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)5 [ c' L2 L0 ~7 {7 Y
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
/ \3 B% X7 J& |; Y# V. K) U @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
- }* z# P! @8 `9 T" ]8 f! M+ sGO5 W4 t* o9 n ^2 c
" N$ r" H8 n9 E, |
-- 将作业与调度关联起来
3 H, k! ]- r- m' W# ]EXEC sp_attach_schedule
5 g7 u9 v# g- l6 E @job_name = N'IncreaseUserCashJob', -- 作业名称
( {% D6 P" P$ q6 ` @schedule_name = N'MinuteSchedule'; -- 调度名称/ k2 F4 j- B B& A
GO# r9 h/ l9 X& M4 Z' p; g7 ~
8 W' i6 M& e: \9 [' U( J1 ]-- 提交作业创建到SQL Server Agent! j/ g" x( P' q* V- h
EXEC sp_add_jobserver
9 Z1 e2 P0 b, F7 U% q# f8 h) C n @job_name = N'IncreaseUserCashJob', -- 作业名称
* S! C9 ~7 X7 f @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')' h/ U* I6 s% Z+ B) C
GO
2 k- Y! Q. c* L& U/ H- i' P' l7 X$ _! w- P7 e0 ^2 l- |
+ w* H9 N+ Y6 |# i
8 N' q1 \# N$ l- f5 ]5 |+ L5 x8 A! G
9 \! f, F; j: Q
d+ g$ X: K8 B |
|