高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------9 T) C1 k# S5 i1 V
USE msdb;3 K6 C. s2 I# ?8 ^
GO4 G3 P, I% R# U7 w2 P' p# e* s
8 `$ B% ~& r$ Y% ]$ U1 _+ O
-- 如果作业已存在,则先删除它
) M! \' x& V# n# q% @+ KIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
# @) M6 P/ ~6 x2 p EXEC sp_delete_job @job_name = N'IncreaseUserCashJob'; w1 z) i. b1 k, f9 _3 N! {
GO z U% A$ B) \/ r O
1 U& I! R$ Y9 J. b1 `6 @# Q-- 创建新的作业$ ^( H& R* M C& W$ @
EXEC sp_add_job
6 q; x. A; Z1 b, Q: `; R6 @ @job_name = N'IncreaseUserCashJob', -- 作业名称* M' n* a7 K4 h' p
@enabled = 1, -- 启用作业1 X) T$ A6 X0 r7 S4 [
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改# J2 V( i( Y! ?& N2 ]- \6 S7 @9 x
@notify_level_email = 0, -- 不发送电子邮件通知
: B; R$ S$ k6 a2 h2 h+ ]( f5 r @notify_level_netsend = 0, -- 不发送网络消息通知( L. W/ ]6 D- L5 o3 g5 e; Z- [
@notify_level_page = 0, -- 不发送寻呼通知
9 \' h! W2 b6 i9 [% Z& I1 V. I @delete_level = 0, -- 不自动删除作业
/ V+ O5 N# _$ A) z+ x( S. Y @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述 m( \9 ^3 |) f- u' t3 E
@category_name = N'[Uncategorized (Local)]', -- 作业类别
& @8 O2 i' c! W2 Q! Z/ k9 z7 _- d @owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)/ T, a$ k& Q& ^: ^& q9 d$ f3 N5 o
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
3 k6 T. }% ~' Z/ Z- e8 sGO7 K, e5 v6 ~0 q. c z
; a% z2 n) Y: k0 `
-- 为作业添加一个步骤% a, X- }7 D5 F) N6 @( ~, a0 b
EXEC sp_add_jobstep 2 N, [( R0 d* ]. }) v8 h
@job_name = N'IncreaseUserCashJob', -- 作业名称# j8 p8 K) U0 o a1 T/ e
@step_name = N'ExecuteStoredProcedure', -- 步骤名称" E5 ^3 U4 s; N5 C
@subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)7 u; \; m) W9 `/ A
@database_name = N'account', -- 指定数据库名称
. B( g8 L. }; r9 _+ g0 K @command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
% R$ [4 ]) B. f5 E @retry_attempts = 5, -- 重试次数
- U( W) y2 A8 r ^, G# M( J: i @retry_interval = 5; -- 重试间隔(分钟)
q/ M; W0 w7 RGO, G( K! N! L! r9 A( J! A
( ?0 n4 w% m4 k) b( Z( p-- 为作业添加一个每分钟执行一次的调度8 m. Q3 @! _+ ~; G9 O4 q& j
EXEC sp_add_schedule
8 G) ^$ X+ U( F: e0 y$ ?! D @schedule_name = N'MinuteSchedule', -- 调度名称
& | t; l A2 v @freq_type = 4, -- 频率类型(4表示每日)
9 {7 z# q* q& J' j4 ~ @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行# u1 a5 K9 ~& D3 h
@freq_subday_type = 4, -- 子日频率类型(4表示分钟), A: T- `0 Q; v2 e; u3 Z; x( x
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)2 L2 }9 y; I* V( p( ]9 @/ @* o+ k+ h
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)9 o' G+ i2 [, U1 R7 [
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
7 y. L- n# i+ u9 F7 { @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
4 C# ?' O4 G' |: @. ]' y, J @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
5 M( |/ \4 d& {2 E6 _GO
9 E h6 G) [$ f
2 q8 j; W1 z1 E% `* j-- 将作业与调度关联起来' g1 l$ s X% w, x! Q% J
EXEC sp_attach_schedule
8 u( C4 f- g$ [) w, V @job_name = N'IncreaseUserCashJob', -- 作业名称& x" U6 ]$ p3 ^, p
@schedule_name = N'MinuteSchedule'; -- 调度名称
9 t+ q# Y( l; r5 |; ]GO
% b0 v: U6 f8 y9 ^
; V1 @7 ?5 C3 }-- 提交作业创建到SQL Server Agent5 a' o" B. B, n. R/ ~/ z4 P
EXEC sp_add_jobserver 3 E5 }3 Z9 c' O' d
@job_name = N'IncreaseUserCashJob', -- 作业名称
: }" w2 K* ^5 p+ H& g6 l @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')9 i3 m( E5 ~" p9 ^% V5 N
GO! M3 D b! o; X1 {
x% p5 F. A/ Y0 k9 n! F- r+ S
6 t/ q% x6 Z. ]; f% m$ Z! E
, Y* L( Q# B! T$ P8 J5 r5 B! V7 C' R( U& v+ C, i: M; \
o& p% B) q6 p" F; r, u
|
|