原文连接:http://www.sqlservercentral.com/articles/SQL+Agent/Job+Steps+and+Subsystems/72268/sql
By Richard Waymire, 2017/10/11 (first published: 2011/02/17)shell
本文是楼梯系列的一部分:楼梯SQL Server代理数据库
SQL Server代理是任何实时数据库系统的核心。 使用的代理有不少并不老是很明显,因此系统的知识老是有用的,开发人员和dba。 理查德Waymire提供了一个简单的解释,它的许多用途。安全
SQL Server代理工做是由一个或多个工做的一系列步骤。 工做步骤是分配给一个特定的工做子系统,它标识的工做步骤是要执行的工做。 每一个工做步骤运行在一个单独的安全上下文,尽管每一个工做也有一个主人,决定谁能够修改工做。 本文将关注的工做步骤和子系统组成一个SQL服务器代理工做。服务器
最好的方法认为SQL Server代理工做是一个容器,将一组其余组件,须要执行一个给定的任务。 一份工做的主要成分是工做步骤,时间表,警报和通知。sqlserver
当建立一个工做,一个全部者分配给的工做。 所一级,默认状况下,业主将建立工做的用户(不管是transact - sql,经过sp_add_job系统存储过程或使用SQL Server Management Studio)。 大部分的设施的SQL服务器代理假设你是一个系统管理员服务器角色的成员。 若是你是,那么你或任何其余系统管理员能够修改工做一旦建立角色成员。 若是你想要那些角色成员可以修改工做,那么你应该改变工做老板是用户的登陆。 请注意,系统管理员成员能够改变任何工做,无论工做的全部权。spa
1级提到过,一个SQL服务器代理工做是由至少一个做业步骤。 当大多数人认为的工做执行一些工做,他们真正的意思是SQL Server是一个工做的步骤。 工做步骤是定义的类型您想要执行的行动,和每一个工做步骤将执行下列工做子系统之一:操作系统
让咱们建立一个工做,和必要的工做步骤,备份主数据库。 建立一个新的工做,我叫我“备份主”如图1所示。3d
图1——建立一个新的工做代理
如今单击步骤选项卡来查看工做步骤,并单击New…弹出新的做业步对话框(图2)。
图2——建立一个新的工做步骤
我填写这份工做中的步骤执行完整性检查主数据库在咱们开始以前的备份。 我所能作的一切在一个步骤,但想告诉你步骤之间的工做流程。 我已经给个人步骤名称、“检查DB的完整性,并将类型设置为transact - sql。 数据库环境的主人。 我把一个简单的命令在文本框:
DBCC CHECKDB
一些解释为了使这个对话框。 类型下拉选择SQL Server代理子系统。 可能的子系统将在下面描述。 没有安全代理占transact - sql的工做步骤,因此做业步骤将运行在老板的背景下工做。 运行安全代理账户启用工做一步一个不一样的用户的安全上下文,和一般用于工做不归系统管理员角色的成员。
您选择的工做子系统将改变其余对话框的内容。 transact - sql的工做步骤,为您提供一个简单的文本框输入你的transact - sql,正如我在这里完成。 每一个工做步骤相关联的可能有一个不一样的子系统。
接下来,单击高级选项卡为新工做步骤。 您将看到如图3所示的屏幕。 成功的行动定义做业步骤成功完成后会发生什么。 默认选择是去下一个步骤,这意味着若是有多个步骤的工做,这个工做,执行下一步。 若是你点击下拉,你会看到其余选项,包括退出工做(不管是成功或失败的通知),或跳跃到另外一个步骤。 注意,最后一个选项,跳跃到另外一个步骤,才出现你至少在第二步的工做。
图3 -高级选项的新工做步骤
若是一个步骤失败因为某种缘由,你能够选择的数量,能够尝试重试做业步骤。 你也能够指定一个延迟(分钟)之间尝试成功完成的工做步骤。 下面是失败的行为(即工做步骤是没法完成或结束在一个错误代码)。 选项是同样的成功,与一个不一样的默认(与您预期的同样)。
由于这是一个transact - sql批量做业步骤类型,你能够有任何transact - sql命令的输出被记录到一个输出文件(就像在sqlcmd - o选项)。 你也能够一个表(记录结果sysjobstepslogs在MSDB表)。
单击OK,而后单击新添加第二步工做。 假设第一步没有生成一个错误,下一个备份的工做步骤主数据库。 从个人系统的命令(如图4所示):
备份数据库(主)磁盘= N 'C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \该备份\ \ master.bak ' 与初始化
图4,第二个工做步骤备份主数据库
由于这是工做的结束,点击先进的选项卡并选择成功行动为“辞职报告成功。 “就是这样,您应该可以点击OK,看看完成的工做步骤,如图5所示。
图5 -完成的工做
如今单击OK完成定义工做,运行工做。 当你点击运行工做,注意,由于有多个步骤你如今问这一步你想开始工做。 运行做业的第一步(如图6),并观察工做的流程第一步成功运行,而后移动到第二个和最后一步的工做。
图6 -开始工做步骤(选择步骤1)
一旦成功完成,工做是标志着成功,退出(如图7)。
图7——这项工做已经成功运行
有七个主要工做子系统,您将使用。 这个数字不包括复制子系统,由于他们是一个特殊状况,一般这些工做步骤和工做是由复制组件而不是DBA。 咱们将推迟讨论的三个分析服务子系统为下一个水平,他们有几个独特的考虑。
transact - sql子系统很简单,多是最多见的类型的工做步骤将建立。 它容许您运行transact - sql(但不是sqlcmd扩展transact - SQL)针对本地SQL Server的实例,这个实例的隶属于SQL Server代理。 注意,与分析服务子系统,你只能链接到本地SQL Server实例。 还要注意,没有transact - sql代理能力,因此t - sql的工做步骤老是运行在安全上下文中工做的全部者。
ActiveX子系统容许您运行VBScript、Jscript或其余自定义脚本语言(在理论上)。 在默认状况下,脚本将运行在安全上下文中的SQL Server代理服务账户。 若是你精通VBScript这多是一个方便的子系统,可是子系统已经弃用的SQL Server 2008,您应该使用PowerShell子系统。
CmdExec子系统容许您运行操做系统命令(若是你有一个命令提示符打开)。 的命令将运行SQL Server代理服务账户的安全上下文中。 这里要记住的重要的事情(和ActiveX子系统)是没有用户可以点击或接受任何提示,因此确保你的脚本将运行没有用户干预。
PowerShell子系统容许您运行Windows PowerShell脚本1.0或2.0兼容。 子系统与其余脚本,该脚本将在默认状况下在安全上下文中运行的SQL Server代理服务账户。 PowerShell是很是强大的,你应该认真调查PowerShell的增加你的知识。 PowerShell将容许您链接到远程系统,这是一个在限制transact - SQL子系统的链接到远程的SQL服务器的实例。
正如您能够看到的,SQL Server代理工做步骤问题的核心工做内容。 许多不一样的子系统,每一个给你不一样的功能。 在这楼梯的下一步,我将检查代理功能,提升安全工做步骤,以及其余SQL代理子系统进行分析服务。