SQL Server -- 作业(Job) 浅析1
作业介绍
SQL SERVER的作业是一系列由SQLSERVER代理按顺序执行的指定操作。作业可以执行一系列活动,包括运行Transact-SQL脚本、命令行应用程序、Microsoft ActiveX脚本、IntegrationServices 包、Analysis Services 命令和查询或复制任务。作业可以运行重复任务或那些可计划的任务,它们可以通过生成警报来自动通知用户作业状态,从而极大地简化了SQL Server 管理[参见MSDN]。
创建作业、删除作业、查看作业历史记录....等所有操作都可以通过SSMS管理工具GUI界面操作,有时候也确实挺方便的。但是当一个实例有多个作业或多个数据库实例时,通过图形化的界面去管理、维护作业也是个头痛的问题,对于SQL脚本与GUI界面管理维护作业熟优熟劣这个问题,只能说要看场合。下面主要介绍通过SQL脚本来管理、维护作业。
作业分类
创建作业时,往往需要指定作业类别,如果不指定新建作业类别,就会默认为“[未分类(本地)]”,如下截图所示:
当然,你可以查看、添加、删除、修改作业分类。请看下面操作。
1:查看作业分类
Code Snippet
--method 1:
EXECmsdb.dbo.sp_help_category;
GO
--method 2:
SELECT category_id ,--作业类别ID
category_class ,--类别中项目类型:1=作业2=警报 3=操作员
category_type ,--类别中类型:=本地、=多服务器、=无
name --分类名称
FROMmsdb.dbo.syscategories
有兴趣的可以研究一下存储过程msdb.dbo.sp_help_category
SETQUOTED_IDENTIFIER OFF
SET ANSI_NULLS ON
GO
CREATEPROCEDUREsp_help_category
@class VARCHAR(8) ='JOB',
@type VARCHAR(12) =NULL,
@name sysname =NULL,
@suffixBIT =0
AS
BEGIN
DECLARE@retval INT
DECLARE@type_in VARCHAR(12)
DECLARE@category_type INT
DECLARE@category_classINT
DECLARE@where_clause NVARCHAR(255)
DECLARE@cmd NVARCHAR(255)
SET NOCOUNT ON
SELECT@class=LTRIM(RTRIM(@class))
SELECT@type =LTRIM(RTRIM(@type))
SELECT@name =LTRIM(RTRIM(@name))
IF (@type='') SELECT@type=NULL
IF (@name= N'') SELECT@name=NULL
IF (@class='JOB') AND (@typeISNULL)
SELECT@type_in='LOCAL'
ELSE
IF (@class<>'JOB') AND (@typeISNULL)
SELECT@type_in='NONE'
ELSE
SELECT@type_in=@type
EXECUTE@retval= sp_verify_category@class,
@type_in,
NULL,
@category_class OUTPUT,
@category_type OUTPUT
IF (@retval<>0)
RETURN(1)
IF (@suffix<>0)
SELECT@suffix=1
IF@nameISNOTNULLAND
NOTEXISTS(SELECT*FROMmsdb.dbo.syscategories WHERE name =@name
AND category_class=@category_class)
BEGIN
DECLARE@category_class_stringNVARCHAR(25)
SET@category_class_string=CAST(@category_classASnvarchar(25))
RAISERROR(14526, -1, -1, @name, @category_class_string)
RETURN(1)
END
SELECT@where_clause= N'WHERE (category_class= '+CONVERT(NVARCHAR, @category_class) + N') '
IF (@nameISNOTNULL)
SELECT@where_clause=@where_clause+ N'AND (name = N'+QUOTENAME(@name, '''') + N') '
IF (@typeISNOTNULL)
SELECT@where_clause=@where_clause+ N'AND (category_type= '+CONVERT(NVARCHAR, @category_type) + N') '
SELECT@cmd= N'SELECTcategory_id, '
IF (@suffix=1)
BEGIN
SELECT@cmd=@cmd+ N'''category_type''= '
SELECT@cmd=@cmd+ N'CASEcategory_type '
SELECT@cmd=@cmd+ N'WHEN 0 THEN''NONE'''
SELECT@cmd=@cmd+ N'WHEN 1 THEN''LOCAL'''
SELECT@cmd=@cmd+ N'WHEN 2 THEN''MULTI-SERVER'''
SELECT@cmd=@cmd+ N'WHEN 3 THEN''NONE'''
SELECT@cmd=@cmd+ N'ELSEFORMATMESSAGE(14205) '
SELECT@cmd=@cmd+ N'END, '
END
ELSE
BEGIN
SELECT@cmd=@cmd+ N'category_type,'
END
SELECT@cmd=@cmd+ N'name '
SELECT@cmd=@cmd+ N'FROMmsdb.dbo.syscategories '
EXECUTE (@cmd+@where_clause+ N'ORDER BYcategory_type, name')
RETURN(@@error)
END
GO
sp_help_category
2:添加作业分类
如下所示,添加一个叫"DBA_MONITORING"的作业分类
Code Snippet
EXECmsdb.dbo.sp_add_category
@class=N'JOB',
@type=N'LOCAL',
@name=N'DBA_MONITORING' ;
GO
SELECT * FROMmsdb.dbo.syscategories WHERE NAME='DBA_MONITORING'
category_id category_class category_type name
------------------------- ------------- -------------
102 1 1 DBA_MONITORING
有兴趣的可以研究一下存储过程msdb.dbo.sp_add_category
SET QUOTED_IDENTIFIER OFF
SET ANSI_NULLS ON
GO
CREATEPROCEDUREsp_add_category
@classVARCHAR(8) ='JOB',
@type VARCHAR(12) ='LOCAL',
@name sysname
AS
BEGIN
DECLARE@retval INT
DECLARE@category_type INT
DECLARE@category_classINT
SET NOCOUNT ON
SELECT@class=LTRIM(RTRIM(@class))
SELECT@type =LTRIM(RTRIM(@type))
SELECT@name =LTRIM(RTRIM(@name))
EXECUTE@retval= sp_verify_category @class,
@type,
@name,
@category_class OUTPUT,
@category_type OUTPUT
IF (@retval<>0)
RETURN(1)
IF (EXISTS (SELECT*
FROM msdb.dbo.syscategories
WHERE (category_class =@category_class)
AND (name =@name)))
BEGIN
RAISERROR(14261, -1, -1, '@name', @name)
RETURN(1)
END
INSERTINTOmsdb.dbo.syscategories (category_class, category_type, name)
VALUES (@category_class, @category_type, @name)
RETURN(@@error)
END
GO
3:删除作业分类
如下所示,删除一个叫"DBA_MONITORING" 的作业分类
Code Snippet
EXECmsdb.dbo.sp_delete_category
@name=N'DBA_MONITORING',
@class=N'JOB';
GO
有兴趣的可以研究一下存储过程msdb.dbo.sp_delete_category
转载于:https://blog.51cto.com/57388/1846689
SQL Server -- 作业(Job) 浅析1相关推荐
- SQL SERVER作业的Schedules浅析
SQL SERVER作业的计划(Schedules),如果你没仔细研究过或没有应用一些复杂的计划(Schedules),那么你觉得SQL SERVER作业的计划(Schedules)非常好用,也没啥问 ...
- sql server作业_SQL Server作业性能–报告
sql server作业 描述 (Description) Once collected, job performance metrics can be used for a variety of r ...
- sql server作业_在SQL Server中报告作业失败并发出警报
sql server作业 SQL Server Agent can be used to run a wide variety of tasks within SQL Server. The buil ...
- SQL Server 作业监控
原文:SQL Server 作业监控 在讲解SQLServer Agent Jobs之前,先要讲解msdb. Msdb是SQLServer的系统数据库之一,用于存储SQLServer的配置.元数据等信 ...
- 使用SQL Server作业设置定时任务
1.开启SQL Server Agent服务 使用作业需要SQL Agent服务的支持,并且需要设置为自动启动,否则你的作业不会被执行. 以下步骤开启服务:开始-->>>运行--&g ...
- MySql,Sql Server分区技术浅析
一.MySql MySql在5.1以后的版本中加入了分区技术,其不同于以往的分表技术,之前的分表技术是把一张大的表水平(按照一定的逻辑)分成多张表,比如如果我们的User表中有1000万条数据,那如果 ...
- MS Sql Server 作业编辑报错以及不显示历史记录
如下图: 解决方法: 1.开始->运行,输入dcomcnfg.exe 2.打开组件服务器->计算机->我的电脑->DCOM配置: 3.找到Microsoft Office Ex ...
- sql server 作业收缩数据库
USE[master]GOALTER DATABASE PayFlow2 SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE PayFlow2 SET R ...
- 使用SQL Server Management Studio 创建作业备份数据库
在项目中,经常需要备份数据库,如果能做到只需点个按钮("开始备份数据库"按钮),然后什么都不管,数据库就自动备份好了,或者服务器上的数据库隔一段时间自动备份一次,那该多好啊. Sq ...
最新文章
- word文档内容如何防止被复制
- 2017年如何成为全栈工程师,这些技能是你必须具备的!
- java启动scrapy爬虫,爬虫入门之Scrapy 框架基础功能(九)详解
- SQL疑难杂症【4 】大量数据查询的时候避免子查询
- MATLAB 长度和像素_Matlab中短时傅里叶变换 spectrogram和stft的用法
- android代码重启设备,Android设备重启(reboot)---Android studio
- SQLite学习笔记(三)--创建内存数据库
- CS231n——编程作业环境配置
- 常用工具下载及在线地址
- 02. Prefer consts, enums, and inlines to #defines
- 控件无法安装的问题-Unable to execute file
- u8服务器配置维护,u8客户端连接服务器配置
- 微信小程序可视化开发工具之动态数据
- srb (bug篇)
- Openlayers + Vue实现GIS地图的一些常见问题(整理)
- 产品经理:能不能让这串数字滚动起来?
- 基于Ant Design vue框架之三 删除功能细分
- 长芯微LCM1118 16 位模数转换器 P2P替代ADS1118
- 《科学之路》读书笔记
- Vue 实现页面一键截屏功能