sqlserver 作业调度(作业常用的几个步骤)
2016-12-26 19:55
260 查看
--【作业常用的几个步骤】 EXECmsdb.dbo.sp_delete_job EXECmsdb.dbo.sp_add_job EXECmsdb.dbo.sp_add_jobstep EXECmsdb..sp_add_jobschedule EXECmsdb.dbo.sp_add_jobserver EXECmsdb.dbo.sp_start_job --删除作业 IFEXISTS(SELECTJOB_IDFROMMSDB.DBO.SYSJOBS_VIEWWHERENAME=N'作业名称') EXECUTEMSDB.DBO.SP_DELETE_JOB@JOB_NAME=N'作业名称' --定义创建作业 DECLARE@jobiduniqueidentifier EXECmsdb.dbo.sp_add_job @job_name=N'作业名称', @job_id=@jobidOUTPUT --定义作业步骤 DECLARE@sqlnvarchar(400),@dbnamesysname SELECT@dbname=DB_NAME(),--执行的数据库(当前) @sql=N'作业步骤内容'--一般定义的是使用TSQL处理的作业,这里定义要执行的Transact-SQL语句 EXECmsdb.dbo.sp_add_jobstep @job_id=@jobid, @step_name=N'作业步骤名称', @subsystem='TSQL',--步骤的类型,一般为TSQL @database_name=@dbname, @command=@sql --创建调度(使用后面专门定义的几种作业调度模板) EXECmsdb..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@servernamesysname SET@servername=CONVERT(nvarchar(128),SERVERPROPERTY(N'ServerName'))--当前SQL实例 EXECmsdb.dbo.sp_add_jobserver @job_id=@jobid, @server_name=@servername ----------------------------------------------------------------------------------------------- --调度模板定义sp_add_jobschedule --只执行一次的作业调度 EXECmsdb..sp_add_jobschedule @job_id=@jobid, @name=N'调度名称', @freq_type=1,--仅执行一次 @active_start_date=NULL,--作业执行的开始日期,为NULL时表示当前日期,格式为YYYYMMDD @active_start_time=00000--作业执行的开始时间,格式为HHMMSS --日调度 EXECmsdb..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 --周调度 EXECmsdb.dbo.sp_add_jobschedule @job_id=@jobid, @name=N'调度名称', @freq_type=8,--每周 @freq_recurrence_factor=1,--每多少周执行一次,这里是每周 @freq_interval=62,--在星期几执行,由POWER(2,N)表示,N的值为0~6,代表星期日~星期六,如果指定两个,则将值相加,例如,值为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个月的每月几号) EXECmsdb.dbo.sp_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个月的相对时间) EXECmsdb.dbo.sp_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 --在特定时候执行的作业调度 EXECmsdb.dbo.sp_add_jobschedule @job_id=@jobid, @name=N'调度名称', @freq_type=64--64=在SQLServerAgent服务启动时运行,128=计算机空闲时运行 -----------------------------------------------------------------------------------------------
IFEXISTS(SELECT*FROMDBO.SYSOBJECTSWHEREID=OBJECT_ID(N'[DBO].SP_AUTO_CREATEJOB')ANDOBJECTPROPERTY(ID,N'ISPROCEDURE')=1) DROPPROCEDURE[DBO].SP_AUTO_CREATEJOB GO CREATEPROCEDUREDBO.SP_AUTO_CREATEJOB @DBNAMEVARCHAR(100),--执行数据库 @JOBNAMEVARCHAR(100), @EXECSQLNVARCHAR(4000)--执行语句 AS PRINT'----作业:'+@JOBNAME PRINT'----开始执行:'+@EXECSQL BEGINTRANSACTION DECLARE @JOBIDUNIQUEIDENTIFIER, @RETURNCODEINT SELECT@RETURNCODE=0 BEGIN IFEXISTS(SELECTJOB_IDFROMMSDB.DBO.SYSJOBS_VIEWWHERENAME=@JOBNAME) EXECUTEMSDB.DBO.SP_DELETE_JOB@JOB_NAME=@JOBNAME EXECUTE@RETURNCODE=MSDB.DBO.SP_ADD_JOB--返回值:0成功,1失败 @JOB_NAME=@JOBNAME, @ENABLED=1,--状态。默认值为1(启用),为0不启用 @OWNER_LOGIN_NAME='SA',--拥有作业的登录名。默认值为NULL,可解释为当前登录名 @JOB_ID=@JOBIDOUTPUT IF(@@ERROR<>0OR@RETURNCODE<>0)GOTOQUITWITHROLLBACK EXECUTE@RETURNCODE=MSDB.DBO.SP_ADD_JOBSTEP @JOB_ID=@JOBID, @STEP_NAME=N'STEP1',--步骤名称 @SUBSYSTEM='TSQL',--步骤的类型,一般为TSQL @DATABASE_NAME=@DBNAME,--执行数据库 @COMMAND=@EXECSQL--执行语句 IF(@@ERROR<>0OR@RETURNCODE<>0)GOTOQUITWITHROLLBACK EXECUTE@RETURNCODE=MSDB.DBO.SP_UPDATE_JOB @JOB_ID=@JOBID, @START_STEP_ID=1--作业中要执行的第一个步骤的标识号 IF(@@ERROR<>0OR@RETURNCODE<>0)GOTOQUITWITHROLLBACK EXECUTE@RETURNCODE=MSDB.DBO.SP_ADD_JOBSERVER @JOB_ID=@JOBID, @SERVER_NAME=N'(LOCAL)' IF(@@ERROR<>0OR@RETURNCODE<>0)GOTOQUITWITHROLLBACK END COMMITTRANSACTION GOTOENDSAVE QUITWITHROLLBACK: IF(@@TRANCOUNT>0) BEGIN ROLLBACKTRANSACTION RETURN1 END ENDSAVE: EXEC@RETURNCODE=MSDB.DBO.SP_START_JOB@JOB_ID=@JOBID--启动作业 RETURN@RETURNCODE
相关文章推荐
- sqlserver 作业调度(作业常用的几个步骤)
- 调度短信猫常用的几个命令
- 通过作业调度建立SQLServer的自动备份
- SqlServer 调优的几个关键的步骤--sp_lock,sp_who
- MS SQL Server 无法添加、更新或删除从msx服务器上发起的作业(或其步骤或调度)
- sqlserver的几个常用转换
- 错误14274:无法添加、更新或删除从msx服务器上发起的作业(或其步骤或调度)的解决方法
- SqlServer异常处理常用步骤
- iOS- 网络访问两种常用方式【GET & POST】实现的几个主要步骤
- java中字符串处理、串联和转换的几个常用方法,以及如果需要自己编程实现的具体实施步骤。
- 公司用的git版本控制系统,记录下几个常用的命令和步骤
- SQL SERVER 修改、删除作业时报错14274:无法添加、更新或删除从msx服务器上发起的作业(或其步骤或调度)
- 作业调度调度平台的几个技术细节
- 计算机名称更改以后,无法添加、更新或删除从msx服务器上发起的作业(或其步骤或调度) 解决方法
- sqlserver:几个常用的数据恢复工具
- Access,SqlServer, Oracle, DB2 常用的几个函数
- 错误14274:无法添加、更新或删除从msx服务器上发起的作业(或其步骤或调度)(转帖)
- Sqlserver:代理作业调度的时间不准确.作业停止问题
- 无法添加、更新或删除从MSX服务器上发起的作业(或其步骤或调度)
- 几个常用的操作系统进程调度算法