SQL Server代理(2/12):作业步骤和子系统
SQL Server代理是所有实时数据库的核心。代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的。这系列文章会通俗介绍它的很多用法。
SQL Server代理作业有一系列的一个或多个作业步骤组成。一个作业步骤会分配给特定的作业子系统,用来标识将要进行的作业步骤工作种类。每个作业步骤在各自安全上下文运行,尽管每个作业有可以决定谁可以修改作业的拥有者。这篇文章会聚焦组成SQL Server代理作业的作业步骤和子系统。
作业的快速回顾
认为SQL Server代理作业的最好方式是关联一系列需要进行指定任务的组件的容器。作业的主要组件是作业步骤,计划,警报和通知。
当作业被创建时,拥有者会分配给作业。如第一篇提到的,默认的拥有者会是创建作业的用户(不管使用T-SQL,通过sp_add_job系统存储过程或使用SSMS)。SQL Server代理的大部分功能假设你是sysadmin服务器角色成员。如果是的话,一旦作业创建后,那么你或任何其他sysadmin服务器角色成员可以修改作业。如果你想非sysadmin服务器角色成员可以修改作业,那么你应该修改作业拥有者为登录的用户。注意sysadmin成员可以修改任何作业,不管作业拥有者是谁。
作业步骤
如第一篇提到的,SQL Server代理里的作业至少要有一个作业步骤组成。当大多数人想SQL Server代理进行一些工作时,他们真正的意思是作业步骤。作业步骤是你定义的想要进行的行动类型,包括一下能运行的作业子系统:
- ActiveX
- 操作系统(CMD的运行)
- PowerShell
- 各种复制任务
- SQL Server分析服务(SSAS)命令(例如XML/A)
- SQL Server分析服务(SSAS)查询(MDX)
- SQL Server集成服务(SSIS)包(SQL Server 2000li de DTS包)
- T-SQL脚本
我们来创建一个作业,至少需要一个作业步骤,备份Mater数据库。创建一个新的作业,如插图1所示,我命名它为"备份Master数据库"。
插图1——创建新的作业
现在点击【步骤】标签来查看作业步骤,点击【新建】弹出【新建作业步骤】对话框(插图2)。
在我们进行备份前,我在这个作业步骤里进行master数据库的完整性检查。我可以在一个步骤里完成所有操作,但这里我想向你展示下步骤间的作业流。我取我的作业名称为“检查Mater数据库的完整性”,类型设置为T-SQL。数据库上下文是mater,我在文本框里输入了一个简单的命令:
DBCC CHECKDB
插图2——创建新的作业步骤
对这个对话框做一些简单解释。下拉框类型是用来选择SQL Server代理子系统。可选的子系统在下面会解释。对于T-SQL作业步骤没有安全代理账号,因此作业步骤会在作业拥有者的上下文里运行。安全代理账号可以让作业步骤以不同用户安全上下文运行,通常给作业使用而不是sysadmin组成员。
你选择的作业子系统会改变对话框的剩余内容。对于T-SQL的作业步骤,一个简单的文本框会给你输入你的T-SQL,如我这里所做的。每个作业步骤会有不同相关的子系统。
接下来,点击作业步骤里的【高级】。你会看到如插图3所示的界面。【成功要执行的步骤】定义一旦作业步骤成功执行将发什么的事。默认选项是【转到下一步】,意味着如果作业里有多个作业步骤,这步完成后,执行下一步。如果点击下拉框,你会看到其他选项——包括现存的作业(成功或失败的提醒),或跳转下另一步。注意这个最后选项,跳到另一个步骤,不会显示,知道作业里你有第二个步骤。
插图3——新建作业步骤高级选项
如果作业因某些原因失败,你可以选择作业步骤的【重试次数】。你也可以指定每个尝试成功完成作业步骤间的延迟(分钟为单位)。下面是失败的操作(例如作业不能完成或在错误代码里结束)。这个选项和成功的操作一样,有不同的默认值(如你所预料)。
因为这是个T-SQL的作业步骤类型,你可以有来自T-SQL命令记录的命令输出(就和sql命令里 -o参数)。你也可以将结果写入表(MSDB里的sysjobsteps表)。
点击【确定】,点击【新建】增加第2个作业到作业。假设步骤1没有生成错误,这个下一步作业步骤备份master数据库。这里我系统里的命令:
BACKUP DATABASE [master] TO DISK =
N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\master.bak'
WITH INIT
插图4——备份master数据库的第2个步骤
因为这个事作业的结束,点击【高级】,选择【成功要执行的操作】为:退出报告成功的作业。好了——你可以点击【确定】了,完成后的作业步骤如插图5所示。
插图5——完成的作业。
选择点击【确定】完成作业定义,并运行作业。当你点击运行作业时,注意因为有多个步骤,你会被问从哪个步骤开始你的祖业。从第一个步骤来运行作业(如插图6所示),围观下作业流,第1步成功执行后然后移到的第2步——最后一步作业。
插图6——作业开始步骤选择(选择第1步)
一谈成功完成,作业标记为成功并退出(如插图7所示)
插图7——作业成功执行
作业子系统
你会用到7个主要作业子系统。这个数字不包含复制子系统,因为它们情况特殊,典型的这些作业步骤和作业由复制组件创建而不是DBA。对于下片文章,我们会延迟3个分析服务子系统的讨论,因为它们有几个独特的考虑。
T-SQL脚本
T-SQL子系统非常直接,是你最常创建的作业步骤。它允许你对于本地SQL Server实例运行T-SQL,当然SQL Server代理也是本地和它关联的。注意不像分析服务子系统,你只能连接到本地SQL Server实例。对于T-SQL,没有代理能力,因此对于T-SQL的作业步骤只在作业拥有者的安全上下文里运行。
ActiveX脚本
ActiveX子系统允许你运行VBScript,Jscript,或其他自定义的脚本(理论上)。脚本默认在SQL Server代理服务账号的安全上下文里运行。如果你擅长VBSccript,这是个方便的子系统,但这个子系统已经从SQL Server 2008剥离,你应该使用PowerShell来替代。
操作系统(cmd命令执行)
CmdExec子系统允许你运行操作系统命令(如同你打开命令提示行)。命令会在SQL Server代理服务账号的安全上下文里运行。这里要记住的关键是没有用户可以点击或接受任何提示符,因此请确保你的脚本运行没有用户干预。
PowerShell
PowerShell子系统允许你Windows PowerShell 1.0或2.0兼容的脚本。如其他脚本子系统,甲苯默认在SQL Server代理服务账号的安全上下文里运行。PowerShell非常强大,你应该认真学习并掌握它。PowerShell允许连接到远程系统,因此这是绕开T-SQL子系统的限制,可以连接到远程SQL Server实例。
下篇预告
如你所见,SQL Server代理作业步骤是作业内容的核心问题。有很多不同的子系统,每个提供你不同的能力。在这个系列的下一步,我会在作业步骤上检查加强安全的代理能力,还有SQL代理子系统剩下部分——分析服务。
原文链接:http://www.sqlservercentral.com/articles/SQL+Agent/Job+Steps+and+Subsystems/72268/
SQL Server代理(2/12):作业步骤和子系统的更多相关文章
- SQL Server代理(7/12):作业活动监视器
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这个系列的前几篇文章里,你创建配置了SQ ...
- SQL Server代理(8/12):使用SQL Server代理外部程序
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这个系列的上篇文章里,你学习如何使用SQ ...
- SQL Server代理(1/12):配置和概况
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. SQL Server代理是SQL Serv ...
- SQL Server代理(6/12):作业里的工作流——深入作业步骤
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这里系列的前几篇文章所见,SQL ...
- SQL Server代理(10/12):使用代理账号运行作业
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这一系列的上一篇,你查看了msdb库下用 ...
- SQL Server代理(11/12):维护计划作业
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这一系列的上一篇,我们看了使用代理帐户模 ...
- SQL Server代理(9/12):理解作业和安全
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这个系列的前一篇文章里,你学习了如何在S ...
- SQL Server代理(5/12):理解SQL代理错误日志
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这个系列的前几篇文章所见,SQL ...
- SQL Server代理(4/12):配置数据库邮件
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在以前的文章里我们看到,SQL Serve ...
随机推荐
- centos 后台执行C#控制台程序
1. nohup nohup 无疑是我们首先想到的办法.顾名思义,nohup 的用途就是让提交的命令忽略 hangup 信号.让我们先来看一下 nohup 的帮助信息: NOHUP() User Co ...
- 软件工程day4
使用ps制作了一个icon,将在下个版本中添加,用作程序图标. 参与组例会,得知新功能“吐槽墙”将以聊天室类似的社区形式实现. 提出对现有UI的建议: 对目前的登录窗口的UI不做改动,将标题的“用户登 ...
- 解决IE6下png图片透明度不显示的问题
世界上最遥远的距离,不外乎我在搞前端,你却在用旧IE,现在随着XP要退休了,IE6的市场占有率应该也会逐步下滑.不过基于天朝人民的惰性以及企鹅微软的“扎篱笆”活动,做网站的朋友依旧不能忽视IE6的存在 ...
- Windows Phone App的dump文件实例分析-Stack Overflow
前言 这篇文章我们一起来分析一个从Windows Phone Dev Center上下载下来的dump file.首先按照我上一篇的步骤设置好我们的Windbg,并按住Ctrl +D打开dumpfil ...
- 人人都是 DBA(VI)SQL Server 事务日志
SQL Server 的数据库引擎通过事务服务(Transaction Services)提供事务的 ACID 属性支持.ACID 属性包括: 原子性(Atomicity) 一致性(Consisten ...
- 基于java的设计模式入门(1)——为什么要学习设计模式
大年初一,楼主在这里给大家拜年,祝大家码上升职加薪,码上有对象结婚,码上有车有房,幸福安康. 过完年,回学校注册报道之后,大概就要回深圳到公司开始实习了.提高自己,无非就有两种方式,一是看书学习,二是 ...
- IOS-各控件默认尺寸和参考图标大小
UITabBar
- React(二)实现双向数据流
<div id="app"></div> <script src="bower_components/react/react.min.js& ...
- CCNA基础 IP地址子网划分
计算机是一个非常神奇的物品,它的核心算法是凌驾于任何代码架构.然而互联网网络( Internat )作为整个生态的基础资源.什么?你还不会子网划分? 没关系,看到子网掩码不要怕.因为它无非就是问你 & ...
- C++标准库vector类型详解
Vector简介 vector是定义在C++标准模板库,它是一个多功能.能够操作多种数据结构和算法的模板类(关于模板类我们后面会介绍,如何创建自己的模板类).vector是一个容器,能够像容器一样存放 ...