--【作业常用的几个步骤】
EXEC msdb.dbo.sp_delete_job
EXEC msdb.dbo.sp_add_job
EXEC msdb.dbo.sp_add_jobstep
EXEC msdb..sp_add_jobschedule
EXEC msdb.dbo.sp_add_jobserver
EXEC msdb.dbo.sp_start_job --删除作业
IF EXISTS (SELECT JOB_ID FROM MSDB.DBO.SYSJOBS_VIEW WHERE NAME =N'作业名称')
EXECUTE MSDB.DBO.SP_DELETE_JOB @JOB_NAME=N'作业名称' --定义创建作业
DECLARE @jobid uniqueidentifier
EXEC msdb.dbo.sp_add_job
@job_name = N'作业名称',
@job_id = @jobid OUTPUT --定义作业步骤
DECLARE @sql nvarchar(400),@dbname sysname
SELECT @dbname=DB_NAME(), --执行的数据库(当前)
@sql=N'作业步骤内容' --一般定义的是使用TSQL处理的作业,这里定义要执行的Transact-SQL语句
EXEC msdb.dbo.sp_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 sysname
SET @servername=CONVERT(nvarchar(128),SERVERPROPERTY(N'ServerName'))--当前SQL实例
EXEC msdb.dbo.sp_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 msdb.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个月的每月几号)
EXEC msdb.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个月的相对时间)
EXEC msdb.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 --在特定时候执行的作业调度
EXEC msdb.dbo.sp_add_jobschedule
@job_id = @jobid,
@name = N'调度名称',
@freq_type = 64 --64=在SQLServerAgent 服务启动时运行,128=计算机空闲时运行 -----------------------------------------------------------------------------------------------
IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'[DBO].SP_AUTO_CREATEJOB') AND OBJECTPROPERTY(ID, N'ISPROCEDURE') = 1)
DROP PROCEDURE [DBO].SP_AUTO_CREATEJOB
GO CREATE PROCEDURE DBO.SP_AUTO_CREATEJOB
@DBNAME VARCHAR(100), --执行数据库
@JOBNAME VARCHAR(100),
@EXECSQL NVARCHAR(4000) --执行语句
AS
PRINT '----作业 :'+@JOBNAME
PRINT '----开始执行:' +@EXECSQL BEGIN TRANSACTION
DECLARE
@JOBID UNIQUEIDENTIFIER,
@RETURNCODE INT
SELECT @RETURNCODE = 0
BEGIN
IF EXISTS (SELECT JOB_ID FROM MSDB.DBO.SYSJOBS_VIEW WHERE NAME =@JOBNAME)
EXECUTE MSDB.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 = @JOBID OUTPUT
IF (@@ERROR <> 0 OR @RETURNCODE <> 0) GOTO QUITWITHROLLBACK EXECUTE @RETURNCODE = MSDB.DBO.SP_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 = MSDB.DBO.SP_UPDATE_JOB
@JOB_ID = @JOBID,
@START_STEP_ID = 1 --作业中要执行的第一个步骤的标识号
IF (@@ERROR <> 0 OR @RETURNCODE <> 0) GOTO QUITWITHROLLBACK EXECUTE @RETURNCODE = MSDB.DBO.SP_ADD_JOBSERVER
@JOB_ID = @JOBID,
@SERVER_NAME = N'(LOCAL)'
IF (@@ERROR <> 0 OR @RETURNCODE <> 0) GOTO QUITWITHROLLBACK END
COMMIT TRANSACTION GOTO ENDSAVE QUITWITHROLLBACK:
IF (@@TRANCOUNT > 0)
BEGIN
ROLLBACK TRANSACTION
RETURN 1
END ENDSAVE:
EXEC @RETURNCODE = MSDB.DBO.SP_START_JOB @JOB_ID = @JOBID --启动作业
RETURN @RETURNCODE

 

sqlserver 作业调度(作业常用的几个步骤)的更多相关文章

  1. SqlServer代理作业

    最近一直在学习SqlServer 作业方面的知识,总结一下. 一:作业存在的库. msdb  use msdb Msdb数据库是代理服务数据库,为其报警.任务调度和记录操作员的操作提供存储空间. 二: ...

  2. 查看SQLServer 代理作业的历史信息

    原文:查看SQLServer 代理作业的历史信息 不敢说众所周知,但是大部分人都应该知道SQLServer的代理作业情况都存储在SQLServer5大系统数据库(master/msdb/model/t ...

  3. SSIS实践入门2:批量包的调度和SQLServer代理作业配置

    趁着上一篇文章的余温,我们继续研究一下SSIS中多个包如何调度,难道需要一个包一个包的配置调度程序吗?显然不是的,接下来我们就说一说在SSIS应用中如何批量的调度所有的作业,本文只讲述一个基本的逻辑过 ...

  4. MySql与SqlServer的一些常用用法的差别

    MySql与SqlServer的一些常用用法的差别 本文为转载 本文将主要列出MySql与SqlServer不同的地方,且以常用的存储过程的相关内容为主. 1. 标识符限定符 SqlServer [] ...

  5. 利用SqlServer的作业定时清除过期数据

    有时候我们的数据库中可能会有那么些存放动态数据的表,比如一些每天定时发出的消息通知信息等数据.这些数据我们只需要临时保存,一些老旧的数据需要定时去清除掉,不然时间一长的话单表数据堆积非常严重.导致数据 ...

  6. Hexo学习笔记--常用命令及部署步骤

    参考资料: Hexo搭建Github静态博客:http://www.cnblogs.com/zhcncn/p/4097881.htmlHexo:独立博客新玩法:http://www.aips.me/h ...

  7. 日期时间函数 mysql 和sqlserver 中对于常用函数的日期和时间函数的区别

    1. sqlserver中获取时间用getdate(),默认返回格式是2019-01-21 13:58:33.053,具体的年月日,时分秒毫米,年月日之间用短线连接,时分秒之间用冒号连接,秒和毫米之间 ...

  8. 图解 SQL-Server新建作业

    1,启动SQL Server代理(SQL Server Agent),如下图所示: 2,右击作业--新建作业--常规--填写作业名称 3,步骤--新建 4,步骤名称--数据库名--要执行的存储过程名 ...

  9. SqlServer存储过程中常用函数及操作

    1.case语句 用于选择语句 SELECT ProductNumber, Category = CASE ProductLine WHEN 'R' THEN 'Road' WHEN 'M' THEN ...

随机推荐

  1. uml 推荐文章

    http://blog.csdn.net/zfrong/article/details/4086424 http://www.cnblogs.com/ywqu/archive/2009/12/14/1 ...

  2. 阿里2014校招笔试题(南大)——利用thread和sleep生成字符串的伪随机序列

    引言:题目具体描述记不大清了,大概是:Linux平台,利用线程调度的随机性和sleep的不准确性,生成一个各位均不相同的字符数组的伪随机序列.不得使用任何库函数.(这句记得清楚,当时在想线程库算不算, ...

  3. 针对SYN洪水攻击的防御措施

    可以运用sysctl命令进行配置,由于本命令参数较多,这里只简单记录几个比较常用的参数: 1.tcp_max_syn_backlog 这个参数指定了后备队列可维持的TCP半开连接的数目,如果该值设定很 ...

  4. div+css进度条

    效果图: 进度条代码: <style type="text/css"> 红色:background-color:f05153:border:1px solid #f05 ...

  5. 【leetcode】Single Number II (medium) ★ 自己没做出来....

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  6. 【XLL API 函数】xlGetBinaryName

    用于返回由 xlDefineBinaryName 函数定义的名称数据句柄.定义的名称和工作簿一起保存,我们可以在任意时间访问这个名称. 原型 Excel12(xlGetBinaryName, LPXL ...

  7. October 14th 2016 Week 42nd Friday

    Who am I? Coming October 18, 2016! 我是谁?2016.10.18 拭目以待! Don't worry. You will be a wow. Don't worry. ...

  8. windows一个目录下最大文件数目

    对于FAT16文件系统, 可以保存的文件体积最大值是 4 GB - 1 byte (2^32 bytes - 1 byte): 卷的最大体积是4GB:每个卷上最多可以保存的文件数量是65,536个 ( ...

  9. 方法重载的小demo

    方法的重载(overload)要求:1,同一个类中2,方法名必须相同3,方法的参数列表不同(1,参数的个数不同2,参数类型不同,但是参数名相同) 注:方法的重载与方法的返回值类型没有关系 packag ...

  10. C语言中一个替换 strcpy的极好的方法

    在C语言中有个方法:strcpy() 使用时经常容易内存申请不足,或是没有申请内存导致,复制的时候报错,我新写了一个方法,弥补这个缺陷 char *strcpy1(char *strDes, char ...