中级会员
- 积分
- 485
- 金钱
- 375
- 贡献
- 36
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------9 {, w) x3 P+ n/ s* Q. a7 d& {
USE msdb;8 A. z. ~' ?4 l! l( x1 V0 r4 F
GO
+ V* L2 l, D( @5 K3 N- F: c" T% r1 a2 ~% y
-- 如果作业已存在,则先删除它
/ E+ _; {1 y5 l; ?/ V0 yIF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')9 O# k0 F' W2 y. `" I% ^6 [
EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
# J y& {6 [; ]: SGO
- K l; V. v: r# m$ i7 x- M' d& s! A+ ?' _
-- 创建新的作业. C7 @' `' I! D( G: A% C
EXEC sp_add_job
; Y' o1 e" O: v @job_name = N'IncreaseUserCashJob', -- 作业名称+ z4 e: |3 r: u" V0 g
@enabled = 1, -- 启用作业1 B( k) z( }9 ^. n& a3 `6 L' l+ Z
@notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
. n* |+ k6 \* E+ c5 n \! o3 g @notify_level_email = 0, -- 不发送电子邮件通知
* H4 f9 Z9 H: q- p @notify_level_netsend = 0, -- 不发送网络消息通知
. G" c K! d: ? @notify_level_page = 0, -- 不发送寻呼通知$ b4 H) u f ~) d2 s
@delete_level = 0, -- 不自动删除作业
. U* w# P& @- Y" a8 w @description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
; l2 e) U3 t3 `- j8 E: ~9 C" U @category_name = N'[Uncategorized (Local)]', -- 作业类别6 \! ?4 ?8 `! Y% v! \$ f# s6 j
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)1 Z) b/ l; ~7 Q- D
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员$ y( W! K5 q L m$ P }
GO& d. `2 D2 d& [
/ k% D5 E5 C( b# E @0 e# ~1 k3 D-- 为作业添加一个步骤$ w: ?) Z4 K2 H7 B5 N
EXEC sp_add_jobstep + k r9 W0 I6 E1 ^. |) j
@job_name = N'IncreaseUserCashJob', -- 作业名称
3 o% e1 q0 _. L: M/ ]/ m) O @step_name = N'ExecuteStoredProcedure', -- 步骤名称
2 G# U; _- z8 X/ _9 s {# Y @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL)3 S6 q+ o8 H3 \9 A9 f5 m' H1 C* x
@database_name = N'account', -- 指定数据库名称4 g( }/ N: }! h3 X4 T# l( ^
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程); b5 B2 ]5 T; L; C" _9 {
@retry_attempts = 5, -- 重试次数& |. E. t! j# U# c( J* s
@retry_interval = 5; -- 重试间隔(分钟). @9 Z3 l: q" q) [
GO5 q9 y8 \# S* e0 m3 ~
4 a) c( R* \9 u: C O-- 为作业添加一个每分钟执行一次的调度- {- u: h* l# k$ g6 I3 d7 @# H
EXEC sp_add_schedule
0 G3 ~! [6 k" p( |' ]6 { @schedule_name = N'MinuteSchedule', -- 调度名称! E! S0 k$ b% \) Z' _$ d
@freq_type = 4, -- 频率类型(4表示每日)
8 w, |# @$ A( V0 I# { @freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
0 o+ H5 |0 H; B. Z& i3 ~ @freq_subday_type = 4, -- 子日频率类型(4表示分钟)- e5 i( _, h# U
@freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次)0 @$ }2 {6 D* w' ]$ O* X
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD): S, p* E3 y, k1 T# l
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
# R" ~2 p/ [$ \7 H7 r. m @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期)
- B, d' ?4 U+ e# [1 C @active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)
) p0 u! {* n% Y1 `9 uGO1 y1 g6 X2 d9 ] @
- R( X6 F5 `! B/ x8 }
-- 将作业与调度关联起来9 V1 g( o8 ?1 T' \# M
EXEC sp_attach_schedule
: r+ B, _: [8 P* n9 b2 }, Y @job_name = N'IncreaseUserCashJob', -- 作业名称
- t( i/ m4 m. p5 L4 O% N @schedule_name = N'MinuteSchedule'; -- 调度名称6 m% k( R5 z' I# j* ]: j' F+ {
GO
9 G6 |$ `7 K9 D2 j- a3 X# v& x; _$ ]) h! f g( I
-- 提交作业创建到SQL Server Agent
' y* c5 p: @. ]& _$ P+ oEXEC sp_add_jobserver ! A, N+ N& d% \7 h2 j) C
@job_name = N'IncreaseUserCashJob', -- 作业名称. q' z) P1 }1 s
@server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
z2 u" r- z8 |, N3 P" Y" y, O, }, hGO3 K( f8 ]6 ]7 r
* j& S. E3 u+ V5 ]; e8 c/ U2 }1 W$ \8 x' F9 P; z3 v! s" U" f1 \- x
) `& n* O+ `( z E3 ^2 {# A4 v, e% n$ \7 O" G0 J B) o
( e& v. Q3 }. y |
|