高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
1 q! g$ b1 a. ]" lUSE msdb;
+ i2 ` o* i5 f, l1 r. [GO
* H# W9 s/ q, G7 K( h$ _2 O! a p8 M9 `
-- 如果作业已存在,则先删除它) h0 V+ x( J2 U+ P4 J
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
7 q- X q7 X0 Q# K EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';) N5 Q; {5 p, E" |( n' U8 J9 |, r
GO! h/ |) \4 n0 @: M( Z
0 y: p' U0 Y- P
-- 创建新的作业& n, E, s4 n6 r/ ]0 m
EXEC sp_add_job
& U4 i* v! f) a7 s4 y: p @job_name = N'IncreaseUserCashJob', -- 作业名称& D; {$ O! ~( b, b7 F
@enabled = 1, -- 启用作业4 X! O3 A5 P7 F9 U
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
4 u% G- h" {! ?9 x. j [ @notify_level_email = 0, -- 不发送电子邮件通知* P! J4 B2 x8 i. d1 b6 @* s
@notify_level_netsend = 0, -- 不发送网络消息通知
3 }3 k8 O: J9 p! P @notify_level_page = 0, -- 不发送寻呼通知& s4 H v* ]; Y- K \' ~
@delete_level = 0, -- 不自动删除作业
; J o' _: `/ ]) I0 t8 r, I @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述' q; j [ B5 d, v" H9 Q& m
@category_name = N'[Uncategorized (Local)]', -- 作业类别1 g0 |/ m d( _! L. p' s; V
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)' Z8 z9 I9 K2 T# _
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
0 K5 E5 \5 M9 i) D( N- d% wGO
" Z5 i4 M- V: L' O4 ]
( i2 S# L; K6 m$ d1 b$ ~# M-- 为作业添加一个步骤 z% @; Q. b* T' P7 N
EXEC sp_add_jobstep 5 ^! X% g8 `1 T+ P' ^, B
@job_name = N'IncreaseUserCashJob', -- 作业名称9 z' n# ], W7 l, w! J
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
/ z% r# i: o- C) u0 f! S: L* u# L @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)0 @% z! d) h. }* }* ]5 _
@database_name = N'account', -- 指定数据库名称
, h' W* Y8 c: Y5 v, J/ H @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
1 R, v! R0 N( V0 }+ W7 s @retry_attempts = 5, -- 重试次数, {0 t- O0 O6 s0 |" A5 `
@retry_interval = 5; -- 重试间隔(分钟)6 n, u9 _4 E5 g5 g! g, B! G8 ^
GO& ]* M: H! t5 A* W; |2 P3 z) ]
1 u" ]" D2 b0 s& P0 v; s- x2 z4 ^-- 为作业添加一个每分钟执行一次的调度, _4 B W) `9 g* f! N0 G- `
EXEC sp_add_schedule 3 {- h" C1 L( h
@schedule_name = N'MinuteSchedule', -- 调度名称
7 w9 c/ N1 V9 b' [$ A @freq_type = 4, -- 频率类型(4表示每日) x7 v+ J6 A5 y4 L
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
7 F. B [' D+ y! d @freq_subday_type = 4, -- 子日频率类型(4表示分钟)% `, Q/ \, R. t" e
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
: K' R, D; U3 j" @1 [! `: _0 @0 o @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
$ t: B3 B9 H8 h' y2 } @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)9 e' j A8 Q4 T. d9 r5 i, c, U& Y
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
) w/ C" U- D' Y" q9 a$ k @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
$ [; s6 @* F0 qGO
! Q; R- L2 N7 P. u! r
" |# D! e, g9 @: C-- 将作业与调度关联起来
0 \, j: g6 l9 u" c: p. v EEXEC sp_attach_schedule
' F& w7 l: z5 z @job_name = N'IncreaseUserCashJob', -- 作业名称7 _/ N% X3 ?) g8 n4 R/ l" Y
@schedule_name = N'MinuteSchedule'; -- 调度名称! w: l, ]. i6 \6 n9 y/ P; y
GO
7 x+ r. f9 s# E3 q% {% L% n
% v3 C* k+ R$ u$ f7 m! i/ ^-- 提交作业创建到SQL Server Agent
1 K" _ M1 q6 j) CEXEC sp_add_jobserver I. }0 c+ Y- u1 z) d% A
@job_name = N'IncreaseUserCashJob', -- 作业名称
' c6 p7 q! E8 Y4 @ @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)') |# v& \0 Y6 r; {: L8 j r! a2 P) C8 ~
GO6 X6 I4 y6 I3 ?! [) i% o
1 C0 s' x* F( k3 ?
' b% k4 p' {2 v: M& @
% w5 o" w! g! M9 D; i4 t( T3 ?( \3 U3 P& C6 A$ g5 x
$ ^/ F0 Q, l4 _) b
|
|