高级会员
- 积分
- 812
- 金钱
- 678
- 贡献
- 57
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------" R. O6 `( U% `) v% ^$ ]$ m/ N
USE msdb;
0 E6 f0 j# U: V0 ?1 F% VGO4 k# k5 K0 @$ m( ^, Y0 u6 e: ^' W, j
4 f) i# I0 W8 L, e7 ]-- 如果作业已存在,则先删除它
, Z% b$ `/ Q0 D3 l: k4 g2 KIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
8 ]) j' `9 C% l EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';- {( s! e+ s4 z8 C$ V
GO
M2 Q! O1 X& g/ ]! ]* c9 q7 d: D9 K
-- 创建新的作业) E& @8 ?1 H* s( h) D
EXEC sp_add_job
6 ^8 d) S! U" l8 ~% ^8 o @job_name = N'IncreaseUserCashJob', -- 作业名称
, v3 F/ I/ V, B$ G5 i* I @enabled = 1, -- 启用作业: |& r0 b# W9 J
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改5 F" P& M$ n( q5 ? d w
@notify_level_email = 0, -- 不发送电子邮件通知: ]5 L; A/ ]. e
@notify_level_netsend = 0, -- 不发送网络消息通知
; z1 L0 I& j' U0 b @notify_level_page = 0, -- 不发送寻呼通知
5 M! c& k1 U U+ S @delete_level = 0, -- 不自动删除作业% R/ o- A, l- w4 S3 d
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
( Z E6 g; U# u: u. s @category_name = N'[Uncategorized (Local)]', -- 作业类别+ e+ Z E! Y; \
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
1 ? r+ Z% L C5 t3 }7 t$ \! ^ @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
: T& J7 g) p0 o3 h) B( ~2 U( H9 hGO" L6 K2 F3 R. ^- M! [# T/ r. x1 K
. D, r/ w; {8 v# |* k S
-- 为作业添加一个步骤1 F! A. v+ k+ r" O K
EXEC sp_add_jobstep
5 D6 K" |" R; w# _ @job_name = N'IncreaseUserCashJob', -- 作业名称" ~! v$ x6 ]: c* m8 F A! F
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
: J! ~3 o4 X; n, L* z9 n @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
& t7 p$ e/ N% q/ |9 y! _ @database_name = N'account', -- 指定数据库名称
6 S/ E+ J& b: c+ o @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
7 {3 C9 n6 V) V7 E8 l# I- m: ~ @retry_attempts = 5, -- 重试次数
8 H$ n; |, g/ j @retry_interval = 5; -- 重试间隔(分钟)
_3 p) L0 j3 v4 h5 TGO
( S" G) s* M9 _# V P& r0 M. r, ?1 g- l C& j% t
-- 为作业添加一个每分钟执行一次的调度
0 K, j1 t3 H0 H$ ~* LEXEC sp_add_schedule & X! P( ~6 g0 F8 S9 J7 q( v
@schedule_name = N'MinuteSchedule', -- 调度名称! C) P$ M7 j6 ~. C2 X
@freq_type = 4, -- 频率类型(4表示每日)5 p: B' y+ r; A
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
+ [ a4 {( ? F G8 e @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
( O0 V# O$ ?: W, [6 H @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)# r1 E) F- u9 S' ?
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD): c, H: ~+ y( m
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)3 C! B$ _$ R7 I+ T* D
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)" ^- a# Z* C9 J( M% M
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)* J8 s' Y) B3 f( R8 V: S
GO2 U( _* k+ g$ s5 {9 S
" e9 w& a6 X# v$ n. [; W. d+ n6 i3 C
-- 将作业与调度关联起来4 z+ L9 G& P0 l& f/ [' K
EXEC sp_attach_schedule 5 e. a) }" e4 s. @/ m8 N
@job_name = N'IncreaseUserCashJob', -- 作业名称
/ p0 Q) a4 w. B! v @schedule_name = N'MinuteSchedule'; -- 调度名称
0 J8 }6 I8 J. ?. L7 iGO
& j; I" @& d7 E4 Y& v8 J
$ B. ?% p: n) D2 \ a- P' @. n-- 提交作业创建到SQL Server Agent
' a- w" w8 }8 T5 BEXEC sp_add_jobserver
8 o* N9 P( }/ J# w( M @job_name = N'IncreaseUserCashJob', -- 作业名称! W5 _4 b3 S4 b; k3 Q
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')" ]. o1 r* E) n- G J/ @/ Z3 a
GO: [3 W; A% _3 L( e
' `5 C& N% Z5 p' T, G' [( O4 n8 E0 a; X3 l W" L# S
" K4 q g" x+ U3 r2 @( _7 N7 ]
3 `4 W d! s( R# T
7 T+ ~* m% Z1 [" E' ~( h$ k |
|