高级会员
- 积分
- 883
- 金钱
- 742
- 贡献
- 64
- 注册时间
- 2024-9-13
|
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------
" i: ]# {; {: ~USE msdb;" g* _4 R& v9 e2 U. i. F/ ^% _/ a
GO
% m$ ], l# O4 D- ~" U% U
?( W7 b: N6 v3 r- p-- 如果作业已存在,则先删除它# `0 F4 z: j# C8 y' q. y* C
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
* i. Y" {7 f% {. V& I% z a EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';- F# x" ^/ i: O9 }+ D
GO
' }$ D* u1 }1 b3 X# h0 K) S8 A, z6 R4 c; [" V
-- 创建新的作业
2 `* {$ p/ E1 V/ a% dEXEC sp_add_job 3 p7 R! O: F9 R7 r( p; y* P, ^0 D# b
@job_name = N'IncreaseUserCashJob', -- 作业名称 A! _+ V) u' V. y4 o
@enabled = 1, -- 启用作业
9 X0 {! o, ~5 n8 h! K- V6 E1 W' d @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改, S" ~4 o! y6 s* r: {6 E
@notify_level_email = 0, -- 不发送电子邮件通知
. c& q, y* z: C$ r4 Y6 o @notify_level_netsend = 0, -- 不发送网络消息通知
: V' \, {1 N' x* n7 i e @notify_level_page = 0, -- 不发送寻呼通知
5 I. {! `0 b4 R) ?0 R @delete_level = 0, -- 不自动删除作业
) Z4 `: q/ L9 e* F @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述/ O! E! H$ I! m& s: a
@category_name = N'[Uncategorized (Local)]', -- 作业类别2 z. n3 w+ Z, ~: u
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)2 z8 l9 r P" [1 o
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员$ c' @8 V" u, L6 `2 @- {
GO8 ?$ c: g. T6 k `* W% K/ z
* X8 U+ y. H* `/ _ o7 d-- 为作业添加一个步骤
7 p3 h6 P" R2 s8 p) VEXEC sp_add_jobstep 3 @, D8 m5 B7 ^
@job_name = N'IncreaseUserCashJob', -- 作业名称& ^. s7 ]! H7 Q7 c! N& G7 z
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
' ?8 {/ K& }: i5 c' M" y; v2 n5 c- j @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)
: X+ u! C8 z2 a0 j% z; a @database_name = N'account', -- 指定数据库名称# |! h0 t3 w7 ]
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
" e0 K" ? w' i' b! V0 E @retry_attempts = 5, -- 重试次数
4 m/ h8 g4 y1 K% q! S# c @retry_interval = 5; -- 重试间隔(分钟)( s4 U$ U6 [, Q% [2 V
GO0 Q1 [) _6 K$ d; B5 d
1 }4 C5 n# [5 {! d( {- O) E-- 为作业添加一个每分钟执行一次的调度. k; C9 v( Q1 R9 w! _
EXEC sp_add_schedule ' P6 s' l$ w, b. K1 m
@schedule_name = N'MinuteSchedule', -- 调度名称
2 y1 i9 k9 k' b* }9 ]4 q5 |/ @ @freq_type = 4, -- 频率类型(4表示每日)1 R$ c2 W6 v( I7 k$ b; u {$ T( F" Q( x
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行2 c' x/ i& o! T3 Y G
@freq_subday_type = 4, -- 子日频率类型(4表示分钟)% f$ v$ i* K1 I0 m' T- s9 F8 g
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)
4 P' r3 |0 ^& a @active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)
" ?* Y' e5 s$ {( y6 k @active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)& s" ?0 ^. c/ I3 m4 c
@active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
' A! y* B& T, L* g @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)7 q6 j. U+ V& ?+ p r
GO
* T" z7 [$ r) E: E1 }8 ?: q& t# E( U' Q7 f7 O
-- 将作业与调度关联起来
; _% T# {0 B# w- N: R( U& K4 s5 R5 {EXEC sp_attach_schedule 8 X; C+ N+ n- k, I! Z
@job_name = N'IncreaseUserCashJob', -- 作业名称' f# p2 f _/ T; g0 ^# h
@schedule_name = N'MinuteSchedule'; -- 调度名称0 y- R5 M. h# w6 \8 |! g; U# x s
GO" D+ h9 C# [5 k# Q( d/ v+ U
- \, C) w0 `/ Z- }% q4 b9 D-- 提交作业创建到SQL Server Agent3 ^& G/ D6 Z; _# y$ \ U# i
EXEC sp_add_jobserver * O2 {6 p/ r5 S8 c
@job_name = N'IncreaseUserCashJob', -- 作业名称6 U) R+ R; o* \( D) X7 b- l
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
$ Y6 I- S/ e7 `+ RGO8 W6 s5 m* B7 `
( x6 a" a. V4 f( J
/ b3 |8 }' `/ i: T3 O8 g C$ M: E! `/ |0 k
9 `6 \$ S, u' B( k' ~ X
% q6 ?9 B" |1 ] x" k8 Z0 w |
|