高级会员
- 积分
- 870
- 金钱
- 730
- 贡献
- 63
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
- v. c1 z3 c/ W9 @# `: pUSE msdb;- O( j% s$ t2 |0 \9 @
GO
# p* R- A' a# \3 F3 ~ }' B* @7 H4 e( P& c0 E
-- 如果作业已存在,则先删除它( @1 F$ V& Q( L0 B5 R
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
& r9 H- F$ @) N6 [' f EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';9 Y: h! ^* x9 n* K9 _# B
GO
& C# F. o" X1 g# n; g8 m# I, k3 E5 J2 H6 C
-- 创建新的作业
1 C8 b" R% K/ _/ vEXEC sp_add_job
, T0 c: A" }6 ?2 T; Y& n/ o$ o @job_name = N'IncreaseUserCashJob', -- 作业名称( u# E, N: m d; U" c( o
@enabled = 1, -- 启用作业+ P9 U0 A7 r- M+ Z/ n
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
, M* E2 y# J; V: l( w c @notify_level_email = 0, -- 不发送电子邮件通知4 c& i% O- q5 Q A! x7 E
@notify_level_netsend = 0, -- 不发送网络消息通知
" W7 W% D/ }, M3 q; Q @notify_level_page = 0, -- 不发送寻呼通知
& P0 ] O3 ?" e, l @delete_level = 0, -- 不自动删除作业
/ y- M8 Q& b2 F3 L# } @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述$ h" L( [# b2 x W$ R$ M. q/ j
@category_name = N'[Uncategorized (Local)]', -- 作业类别
% @9 b4 b$ z0 v& p+ a @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)
% y/ C9 v/ e# p' [6 e/ G @notify_email_operator_name = N''; -- 不指定电子邮件通知操作员" o+ a# N6 f! u* k8 [
GO: u# `, H' Q- M4 Q! ~* h
! h" ?9 K2 o6 f# h" X7 p$ H-- 为作业添加一个步骤( w- W$ |( @( o* B5 G
EXEC sp_add_jobstep
+ t+ v* a! z- k6 c R" T: j @job_name = N'IncreaseUserCashJob', -- 作业名称
- j5 Z$ n* n O2 i% E* E @step_name = N'ExecuteStoredProcedure', -- 步骤名称
0 h$ e* j* _% l; }: F: i# [( | @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
' e+ u6 I c# |6 {9 I @database_name = N'account', -- 指定数据库名称8 b6 [! j/ n! A2 S
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
. l# r1 Y9 ~1 w) q' g! v% c, i @retry_attempts = 5, -- 重试次数
) ^. @7 g' u" t0 S: g @retry_interval = 5; -- 重试间隔(分钟)
, l: I6 j1 s9 |8 e2 y& AGO
0 A' Y6 J* A h: H0 j) `# Y; W+ f4 V6 N9 K
-- 为作业添加一个每分钟执行一次的调度( M) M2 A6 a+ w) ^# \5 d
EXEC sp_add_schedule ' i+ A0 T8 c. q- ?
@schedule_name = N'MinuteSchedule', -- 调度名称& F; w5 X4 z3 {; P
@freq_type = 4, -- 频率类型(4表示每日)
% M8 D, ~" r0 F+ I2 i/ W/ v; z @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行$ \# Q, K) C5 p. y' Q& D
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)& h1 o* D: E. [8 ?2 ^: @
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)' y+ S, V% l- a6 `2 x2 I; w
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
2 ]5 y) R" l4 @7 c' J9 n4 l' S @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)3 k4 `: o: L2 }' k+ ]- s$ I# l
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期) P* Y: s/ G2 x! K1 A
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
0 b9 B2 E( K, s5 m+ n8 NGO
- A' j+ I0 A0 R! D7 l- H1 q8 h
-- 将作业与调度关联起来
- z! g" M( m- \& pEXEC sp_attach_schedule
$ B) L8 G, A$ m' D, B8 X5 W @job_name = N'IncreaseUserCashJob', -- 作业名称
& ]: L7 O* x( f! ~9 z @schedule_name = N'MinuteSchedule'; -- 调度名称# W. C3 f' m& V4 r
GO" u3 d% z4 `* m* h1 K: t" K
" s# z' O y1 c6 Y
-- 提交作业创建到SQL Server Agent/ G$ K5 T( Z# L8 r y, y' L) r
EXEC sp_add_jobserver , i$ p7 Z; \* R0 B( m5 n/ v6 A- Y) N
@job_name = N'IncreaseUserCashJob', -- 作业名称# g$ \7 I3 [, Y! {
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')1 |/ q" F4 R" Y: f# F, h* z; b
GO
$ k1 F1 B8 l: h- \
" z* O* W' A! X3 _/ z# s
4 i* p' J6 ?8 ~5 `3 |' l9 G/ M% x3 N
_3 e4 J+ F& ]0 p- k
3 H0 s, V+ b. j0 z' j |
|