高级会员
- 积分
- 891
- 金钱
- 742
- 贡献
- 72
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
( v4 F, C$ R7 P6 U$ b; t4 xUSE msdb;" j- ]# L6 z! z! |4 {& K
GO
2 X' |# \; R" s6 B, E% q9 h, Q9 m, G. {% P. n
-- 如果作业已存在,则先删除它/ {' T( D# J# G: X5 B9 `
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob') ]8 h# E3 ]- e' D9 I% r
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
; x% r+ N+ ?* ?* `7 q+ b& qGO/ [& ?- W. J( C
0 E4 G" O1 d2 x8 [# C2 \-- 创建新的作业
5 Z/ \( o) S6 UEXEC sp_add_job
$ j4 h+ {' |# N% s @job_name = N'IncreaseUserCashJob', -- 作业名称! w/ i0 M4 ^. M5 [$ z$ [
@enabled = 1, -- 启用作业/ h7 T+ n! B r$ w5 r( v
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改( j {8 t" s7 W9 E8 q
@notify_level_email = 0, -- 不发送电子邮件通知
. }3 p6 D3 Z. Y, n @notify_level_netsend = 0, -- 不发送网络消息通知
. L; L2 l; K; M! d9 R! T) [/ i @notify_level_page = 0, -- 不发送寻呼通知- I, N& m7 u$ B# ^
@delete_level = 0, -- 不自动删除作业2 ^8 {6 t) ^" Y: b o% `
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述& g# _8 A* [' n1 b7 O' }/ [
@category_name = N'[Uncategorized (Local)]', -- 作业类别' g5 x4 T4 Y7 T, m2 R ]
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
0 y! H& s w$ m/ _. |/ _2 ?6 k7 ] @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员0 H0 z9 b+ j# k/ t& b2 r+ \' L
GO
, n7 ~ H# n. N+ r/ E; H* U
5 Q* q7 O( Z f8 J: a8 P Q-- 为作业添加一个步骤5 q) }( k. p1 w, o
EXEC sp_add_jobstep
0 y- l/ A5 e, m0 W7 n @job_name = N'IncreaseUserCashJob', -- 作业名称
* i7 n3 i$ G& e) p) G" W( X4 l @step_name = N'ExecuteStoredProcedure', -- 步骤名称: N0 C, x- B" w( I {' s
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL), R' B0 W+ O; B# N- ~# ?
@database_name = N'account', -- 指定数据库名称
7 C0 s8 R& c/ D/ M7 X! Z4 d @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程): z/ x" j) }+ }: @ p0 ^
@retry_attempts = 5, -- 重试次数
: r/ Q' [2 e2 G @retry_interval = 5; -- 重试间隔(分钟)0 w6 d) w: T! q, ? }
GO' I/ J. [" p+ m0 p$ e
6 Q3 ]! B+ S; W, ?8 g7 g# ?/ `-- 为作业添加一个每分钟执行一次的调度
( c4 m' d: x) c" H1 ?" y1 cEXEC sp_add_schedule * \) }- t7 v% t9 Z
@schedule_name = N'MinuteSchedule', -- 调度名称
( d' ^/ j9 ?0 N4 |9 \6 [) x% H @freq_type = 4, -- 频率类型(4表示每日)
" R# k5 S) ^9 A) v1 R5 e @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行* ]+ u" ^) J& y% i5 y
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)" `$ b+ z$ j$ H$ J' ^
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
Y. J+ Q2 R8 f) t @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
9 Q4 q$ r# r2 i' y& l @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)8 l/ r; Z* D0 t. l8 `. Q; n
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
9 X9 M( D$ u8 ^+ H% D @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
1 Y* i0 l8 ^) h- L. p( WGO- a9 d6 t: ?& }$ h
3 Z x& M* v. d3 u-- 将作业与调度关联起来& u% r! D1 }" A; h6 d0 e# u" t
EXEC sp_attach_schedule
/ a8 t" ?& g1 j% A @job_name = N'IncreaseUserCashJob', -- 作业名称
0 U: |" _( H8 s @schedule_name = N'MinuteSchedule'; -- 调度名称
, s" f& L" z1 QGO. K% ~: b# ~3 }4 d4 W
) A/ q) p. [1 z" a* X
-- 提交作业创建到SQL Server Agent9 I* F! e4 _6 n7 Y+ G( @% ]
EXEC sp_add_jobserver " r0 h* H/ h1 }+ `! r
@job_name = N'IncreaseUserCashJob', -- 作业名称
7 U( J @" ^% w- X8 k @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
3 f1 z o5 M% CGO
6 V: r% p" S+ N) L, \$ T- Q( v- \2 S, B) C+ e! t1 J) b* e
( {# Y/ R" X+ s
8 m* E3 \2 n# @4 P) _
3 ?+ m% v" Z9 E+ f. y+ C
& w1 k9 s1 s. \! y& O9 c |
|