sqlserver作业调度(作业常用的几个步骤)

sqlserver作业调度(作业常用的几个步骤)

2023年7月13日发(作者:)

sqlserver作业调度(作业常⽤的⼏个步骤)复制代码–【作业常⽤的⼏个步骤】EXEC _delete_jobEXEC _add_jobEXEC _add_jobstepEXEC msdb…sp_add_jobscheduleEXEC _add_jobserverEXEC _start_job–删除作业IF EXISTS (SELECT JOB_ID FROM S_VIEW WHERE NAME =N’作业名称’)EXECUTE _DELETE_JOB @JOB_NAME=N’作业名称’–定义创建作业DECLARE @jobid uniqueidentifierEXEC _add_job@job_name = N’作业名称’,@job_id = @jobid OUTPUT–定义作业步骤DECLARE @sql nvarchar(400),@dbname sysnameSELECT @dbname=DB_NAME(), --执⾏的数据库(当前)@sql=N’作业步骤内容’ --⼀般定义的是使⽤TSQL处理的作业,这⾥定义要执⾏的Transact-SQL语句EXEC _add_jobstep@job_id = @jobid,@step_name = N’作业步骤名称’,@subsystem = ‘TSQL’, --步骤的类型,⼀般为TSQL@database_name=@dbname,@command = @sql–创建调度(使⽤后⾯专门定义的⼏种作业调度模板)EXEC msdb…sp_add_jobschedule@job_id = @jobid,@name = N’调度名称’,@freq_type=4, --每天@freq_interval=1, --指定每多少天发⽣⼀次,这⾥是1天.@freq_subday_type=0x8, --重复⽅式,0x1=在指定的时间,0x4=多少分钟,0x8=多少⼩时执⾏⼀次@freq_subday_interval=1, --重复周期数,这⾥每⼩时执⾏⼀次@active_start_date = NULL, --作业执⾏的开始⽇期,为NULL时表⽰当前⽇期,格式为YYYYMMDD@active_end_date = 99991231, --作业执⾏的停⽌⽇期,默认为99991231,格式为YYYYMMDD@active_start_time = 00000, --作业执⾏的开始时间,格式为HHMMSS@active_end_time = 235959 --作业执⾏的停⽌时间,格式为HHMMSS–添加⽬标服务器DECLARE @servername sysnameSET @servername=CONVERT(nvarchar(128),SERVERPROPERTY(N’ServerName’))–当前SQL实例EXEC _add_jobserver@job_id = @jobid,@server_name = @servername–调度模板定义 sp_add_jobschedule–只执⾏⼀次的作业调度EXEC msdb…sp_add_jobschedule@job_id = @jobid,@name = N’调度名称’,@freq_type=1, --仅执⾏⼀次@active_start_date = NULL, --作业执⾏的开始⽇期,为NULL时表⽰当前⽇期,格式为YYYYMMDD@active_start_time = 00000 --作业执⾏的开始时间,格式为HHMMSS–⽇调度EXEC msdb…sp_add_jobschedule@job_id = @jobid,@name = N’调度名称’,@freq_type=4, --每天@freq_interval=1, --指定每多少天发⽣⼀次,这⾥是1天.@freq_subday_type=0x8, --重复⽅式,(0x1=指定的时间;0x4=多少分钟;0x8=多少⼩时)执⾏⼀次@freq_subday_interval=1, --重复周期数,这⾥每⼩时执⾏⼀次@active_start_date = NULL, --作业执⾏的开始⽇期,为NULL时表⽰当前⽇期,格式为YYYYMMDD@active_end_date = 99991231, --作业执⾏的停⽌⽇期,默认为99991231,格式为YYYYMMDD@active_start_time = 00000, --作业执⾏的开始时间,格式为HHMMSS@active_end_time = 235959 --作业执⾏的停⽌时间,格式为HHMMSS–周调度EXEC _add_jobschedule@job_id = @jobid,@name = N’调度名称’,@freq_type = 8, --每周@freq_recurrence_factor = 1, --每多少周执⾏⼀次,这⾥是每周@freq_interval = 62, --在星期⼏执⾏,由POWER(2,N)表⽰,N的值为06,代表星期⽇星期六,如果指定两个,则将值相加,例如,值为65表⽰在星期天和星期⽇执⾏(POWER(2,0)+POWER(2,6))@freq_subday_type = 0x8, --重复⽅式,0x1=在指定的时间,0x4=多少分钟,0x8=多少⼩时执⾏⼀次@freq_subday_interval = 1, --重复周期数,这⾥每⼩时执⾏⼀次@active_start_date = NULL, --作业执⾏的开始⽇期,为NULL时表⽰当前⽇期,格式为YYYYMMDD@active_end_date = 99991231, --作业执⾏的停⽌⽇期,默认为99991231,格式为YYYYMMDD@active_start_time = 00000, --作业执⾏的开始时间,格式为HHMMSS@active_end_time = 235959 --作业执⾏的停⽌时间,格式为HHMMSS–⽉调度(每X个⽉的每⽉⼏号)EXEC _add_jobschedule@job_id = @jobid,@name = N’调度名称’,@freq_type = 16, --每⽉@freq_recurrence_factor = 2, --每多少⽉执⾏⼀次,这⾥是每2个⽉@freq_interval = 2, --在执⾏⽉的第⼏天执⾏,这⾥是第2天@freq_subday_type = 0x8, --重复⽅式,0x1=在指定的时间,0x4=多少分钟,0x8=多少⼩时执⾏⼀次@freq_subday_interval = 1, --重复周期数,这⾥每⼩时执⾏⼀次@active_start_date = NULL, --作业执⾏的开始⽇期,为NULL时表⽰当前⽇期,格式为YYYYMMDD@active_end_date = 99991231, --作业执⾏的停⽌⽇期,默认为99991231,格式为YYYYMMDD@active_start_time = 00000, --作业执⾏的开始时间,格式为HHMMSS@active_end_time = 235959 --作业执⾏的停⽌时间,格式为HHMMSS–⽉调度(每X个⽉的相对时间)EXEC _add_jobschedule@job_id = @jobid,@name = N’调度名称’,@freq_type = 32, --每⽉@freq_recurrence_factor = 2, --每多少⽉执⾏⼀次,这⾥是每2个⽉@freq_interval = 9, --在当⽉的那个时间执⾏,1~7=星期⽇⾄星期六,8=⽇ ,9=⼯作⽇,10=周末@freq_relative_interval = 1, --在第⼏个相对时间执⾏,允许的值为1,2,4,8代表第1~4个相对时间,16表⽰最后⼀个相对时间@freq_subday_type = 0x8, --重复⽅式,0x1=在指定的时间,0x4=多少分钟,0x8=多少⼩时执⾏⼀次@freq_subday_interval = 1, --重复周期数,这⾥每⼩时执⾏⼀次@active_start_date = NULL, --作业执⾏的开始⽇期,为NULL时表⽰当前⽇期,格式为YYYYMMDD@active_end_date = 99991231, --作业执⾏的停⽌⽇期,默认为99991231,格式为YYYYMMDD@active_start_time = 00000, --作业执⾏的开始时间,格式为HHMMSS@active_end_time = 235959 --作业执⾏的停⽌时间,格式为HHMMSS–在特定时候执⾏的作业调度EXEC _add_jobschedule@job_id = @jobid,@name = N’调度名称’,@freq_type = 64 --64=在SQLServerAgent 服务启动时运⾏,128=计算机空闲时运⾏复制代码IF EXISTS (SELECT * FROM ECTS WHERE ID = OBJECT_ID(N’[DBO].SP_AUTO_CREATEJOB’) ANDOBJECTPROPERTY(ID, N’ISPROCEDURE’) = 1)DROP PROCEDURE [DBO].SP_AUTO_CREATEJOBGOCREATE PROCEDURE _AUTO_CREATEJOB@DBNAME VARCHAR(100), --执⾏数据库@JOBNAME VARCHAR(100),@EXECSQL NVARCHAR(4000) --执⾏语句ASPRINT ‘----作业 :’+@JOBNAMEPRINT ‘----开始执⾏:’ +@EXECSQLBEGIN TRANSACTIONDECLARE@JOBID UNIQUEIDENTIFIER,@RETURNCODE INTSELECT @RETURNCODE = 0BEGINIF EXISTS (SELECT JOB_ID FROM S_VIEW WHERE NAME =@JOBNAME)EXECUTE _DELETE_JOB @JOB_NAME=@JOBNAMEEXECUTE @RETURNCODE = _ADD_JOB --返回值:0成功,1失败 @JOB_NAME = @JOBNAME,

@ENABLED = 1, --状态。默认值为 1(启⽤),为 0 不启⽤ @OWNER_LOGIN_NAME = 'SA', --拥有作业的登录名。默认值为 NULL,可解释为当前登录名 @JOB_ID = @JOBID OUTPUT

IF (@@ERROR <> 0 OR @RETURNCODE <> 0) GOTO QUITWITHROLLBACK

EXECUTE @RETURNCODE = _ADD_JOBSTEP

@JOB_ID = @JOBID,

@STEP_NAME = N'STEP1', --步骤名称

@SUBSYSTEM = 'TSQL', --步骤的类型,⼀般为TSQL

@DATABASE_NAME = @DBNAME, --执⾏数据库

@COMMAND = @EXECSQL --执⾏语句

IF (@@ERROR <> 0 OR @RETURNCODE <> 0) GOTO QUITWITHROLLBACK

EXECUTE @RETURNCODE = _UPDATE_JOB

@JOB_ID = @JOBID,

@START_STEP_ID = 1 --作业中要执⾏的第⼀个步骤的标识号IF (@@ERROR <> 0 OR @RETURNCODE <> 0) GOTO QUITWITHROLLBACK

EXECUTE @RETURNCODE = _ADD_JOBSERVER

@JOB_ID = @JOBID,

@SERVER_NAME = N'(LOCAL)'

IF (@@ERROR <> 0 OR @RETURNCODE <> 0) GOTO QUITWITHROLLBACK

ENDCOMMIT TRANSACTIONGOTO ENDSAVEQUITWITHROLLBACK:IF (@@TRANCOUNT > 0)BEGINROLLBACK TRANSACTIONRETURN 1ENDENDSAVE:EXEC @RETURNCODE = _START_JOB @JOB_ID = @JOBID --启动作业RETURN @RETURNCODE

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689249946a225760.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信