高级会员
- 积分
- 854
- 金钱
- 716
- 贡献
- 61
- 注册时间
- 2024-9-13
|
楼主 |
发表于 2025-1-18 17:04:14
|
显示全部楼层
第二步------------------首先需要SQL代理需要运行状态,在执行下面使用SQL作业计划每分钟运行一次-----------------------: y& {2 B/ S5 t7 j, P9 U) {- e6 b. ~$ y
USE msdb;- D4 e2 P# G6 a- m: y" \. L
GO
, r6 n8 ]+ x; ?! ~0 `
5 p3 F0 }( I# O! F& H+ n' t-- 如果作业已存在,则先删除它6 {" |! s1 X$ n$ w
IF EXISTS (SELECT job_id FROM msdb.dbo.sysjobs WHERE name = N'IncreaseUserCashJob')
! Y J* r) \9 v; i9 o; w EXEC sp_delete_job @job_name = N'IncreaseUserCashJob';
( x9 j% r" V7 C4 p- DGO
# p+ D1 }3 r$ X/ A' a+ c. b8 p1 P, \/ M7 |) n! |
-- 创建新的作业5 i# H& P' i/ z1 @) x' ~
EXEC sp_add_job % s+ P7 h ]( E: G& r4 B. r% F
@job_name = N'IncreaseUserCashJob', -- 作业名称" A5 Z5 w& D: R! F% _& Y" E) R
@enabled = 1, -- 启用作业
0 k, [! F. x3 l0 K: p @notify_level_eventlog = 0, -- 不在事件日志中记录作业状态更改
2 v6 e% q* r) F& I @notify_level_email = 0, -- 不发送电子邮件通知% s& Z0 V# U: C5 ]8 E
@notify_level_netsend = 0, -- 不发送网络消息通知" K" Q1 V4 {( ^/ a) {4 {
@notify_level_page = 0, -- 不发送寻呼通知
- b5 b8 _% u$ Y' D; Q2 V @delete_level = 0, -- 不自动删除作业# x7 L' i& F' @% P9 v2 e/ S
@description = N'This job increases user cash by 1 for all online users every minute.', -- 作业描述
! V! a- o. I) L @category_name = N'[Uncategorized (Local)]', -- 作业类别+ p9 R" ?2 k1 b0 M
@owner_login_name = N'YourLoginName', -- 作业所有者(请替换为实际的登录名)+ s% X4 l6 A i
@notify_email_operator_name = N''; -- 不指定电子邮件通知操作员
9 R- W; F6 O& q6 NGO F2 }/ ~5 e* a9 I9 y; _$ t
! ^& @5 T+ ~- r6 M' S- k6 L-- 为作业添加一个步骤
) N" D% j+ E) o9 P' X- EEXEC sp_add_jobstep $ I( ?5 R( h- ~8 U( d8 ]9 o
@job_name = N'IncreaseUserCashJob', -- 作业名称9 s' J1 K* ?: E6 k. Q: n
@step_name = N'ExecuteStoredProcedure', -- 步骤名称
- k- P t- n* e" F) _6 v @subsystem = N'TSQL', -- 指定步骤使用的子系统(这里是Transact-SQL); a' J, v. x4 L* L
@database_name = N'account', -- 指定数据库名称/ G4 b. ]: }: @6 P' u0 a% Y2 q2 x
@command = N'EXEC dbo.IncreaseUserCashByOnlineDuration;', -- 要执行的命令(存储过程)
& ]1 S" F$ `- S2 |- C( ^ @retry_attempts = 5, -- 重试次数3 C0 q! w u4 B( ^* K) _
@retry_interval = 5; -- 重试间隔(分钟). _5 k0 H. m$ Q+ \0 n
GO5 i, q/ ]0 C2 i, \! w
" H4 A% a5 u! |+ C
-- 为作业添加一个每分钟执行一次的调度
. N8 l$ D# P( \5 X. S {1 @! WEXEC sp_add_schedule , k2 b2 S/ H& L; b k; O4 Y8 \: Y0 P* H
@schedule_name = N'MinuteSchedule', -- 调度名称
" i. y! \" r; p3 l7 ? @freq_type = 4, -- 频率类型(4表示每日)1 x7 P& T4 s5 P! `. S: k, y
@freq_interval = 1, -- 对于每日频率,这里设置为1表示每天都执行
) b0 E A/ ?* c4 Y8 [" W @freq_subday_type = 4, -- 子日频率类型(4表示分钟)
; s" R6 G! \- |3 r I! I# r3 `& t @freq_subday_interval = 1, -- 子日频率间隔(每分钟执行一次) h% W' F% ?3 S5 W1 ]: z0 i5 J
@active_start_date = 20250118, -- 活动开始日期(格式YYYYMMDD)' J: ?: Y& ?+ ~ ~
@active_start_time = 0, -- 活动开始时间(以24小时制表示,0表示午夜)
. B3 n0 W l( w* j+ N% I @active_end_date = 99991231, -- 活动结束日期(通常设置为一个遥远的未来日期). r! D$ H: F6 t* U h6 |5 e
@active_end_time = 235959; -- 活动结束时间(以24小时制表示,235959表示一天的最后一分钟)/ Q$ @3 p8 X5 U; X* O# S
GO) ^; R+ ^) u5 F, ^+ M0 `5 q
2 L1 `, ^2 g% ]6 Q* ]-- 将作业与调度关联起来
' i0 X8 l t" |: `: FEXEC sp_attach_schedule
& L7 F. d1 S1 @5 y5 a# w @job_name = N'IncreaseUserCashJob', -- 作业名称
3 ]2 O/ `8 Q" ]8 L @schedule_name = N'MinuteSchedule'; -- 调度名称
' m, B. x/ n: e' A/ K: KGO
9 P. S9 J. V+ Z# I* U) e# J8 y/ d9 T( ^9 a# |0 s1 ~1 g% b$ {
-- 提交作业创建到SQL Server Agent1 L4 _5 z2 r6 I
EXEC sp_add_jobserver
% m+ M6 J1 v+ e9 R @job_name = N'IncreaseUserCashJob', -- 作业名称
0 d6 U8 T* N8 x5 ?0 z( t# ^+ ?/ R9 k @server_name = N'(LOCAL)'; -- 服务器名称(对于本地服务器使用'(LOCAL)')
$ n! x1 }: f' Q/ J t4 NGO
* l0 {' C5 E; c- n' r% v! i/ M, A/ ?. O; b y
9 i* Q* }8 q4 @+ k% c$ m! Z$ I
( ?! S& l) U& ]# ^
# Q/ R' [$ _3 h/ t: k. s
9 D- i9 d t" Y/ |& g) l" W |
|