第十六周翻译:Stairway to SQL Server Agent - Level 2: Job Steps and Subsystems

原著信息:Stairway to SQL Server Agent - Level 2: Job Steps and Subsystems
作者:Richard-Waymire
日期:2017-10-11 (第一次出版:2011-02-17)


Stairway to SQL Server Agent - Level 2: Job Steps and SubsystemsSQLServer代理的阶梯-级别2:作业步骤和子系统


SQLServer代理作业由一系列的一个或多个作业步骤组成。作业步骤分配给特定的作业子系统,该子系统标识作业步骤将要执行的工作类型。每个作业步骤在单独的安全上下文中运行,尽管每个作业还具有确定谁可以修改作业的所有者。本文将重点介绍构成SQLServer代理作业的作业步骤和子系统。


A Quick Review of Jobs对工作的快速审查

  将SQLServer代理作业视为容器的最佳方法是将执行给定任务所需的一组其他组件关联起来。作业的主要组件是作业步骤、计划、警报和通知。

  创建作业时,将为该作业分配所有者。如第1级所述,默认情况下,所有者将是创建作业的用户(在Transact-SQL中,通过sp_add_JOB系统存储过程或使用SQLServerManagementStudio)。SQLServer代理的大多数功能都假定您是asysadmin服务器角色成员。如果是,那么一旦创建了作业,您或任何其他sysadmin角色成员都可以修改它。如果希望非sysadmin角色成员能够修改作业,则应将作业所有者更改为该用户的登录名。请注意,sysadmin成员可以更改任何作业,而不管 伙伴关系。


Job Steps作业步骤

  如第1级中所述,SQLServer代理作业至少由一个作业步骤组成。当大多数人认为一项工作在执行某些工作时,他们使用SQL Server的真正含义是一个作业步骤。作业步骤由您希望执行的操作类型定义,每个作业步骤将由下列作业子系统之一执行:

  • 微软倡导的ActiveX 网络化多媒体对象技术
  • 操作系统(CMDExec)
  • Powershell
  • 各种复制任务
  • SQL Server Analysis Services(SSAS)命令(即XML/A)
  • SQLServer分析服务(SSAS)查询(MDX)
  • SQLServerIntegrationServices(SSIS)包(SQLServer2000中的DTS包)。
  • transact-SQL脚本(T-SQL)

  让我们创建一个作业,以及必要的作业步骤,以备份主数据库。创建一个新作业时,我将我的作业称为“备份母版”,如图1所示。


图1: 创建新作业

  现在单击“步骤”选项卡查看作业步骤,然后单击“新建…”打开NewJobStep对话框(图2)。

在这里插入图片描述
图2: 创建一个新的作业步骤

  在开始备份之前,我已经填写了该作业中的步骤,以执行主数据库的完整性检查。我本来可以在一步内完成所有的事情,但是想要向你展示工作流程。我给我的步骤命名为“Check DB Integrity of Master”,并将类型设置为Transact-SQL。数据库上下文是主数据库。我在文本框中放置了一个简单的命令:

DBCC CHECKDB

  此对话框有一些解释。“类型”下拉列表是选择SQL Server代理子系统的位置。下文将介绍可能的子系统。没有Transact-SQL作业步骤的安全代理帐户,因此作业步骤将在作业所有者的上下文中运行。安全代理帐户使作业步骤能够在不同用户的安全上下文中运行,并且通常用于不属于sysadmin角色成员的作业。

  您选择的作业子系统将更改对话框其余部分的内容。对于Transact-SQL作业步骤,将提供一个简单的文本框供您键入Transact-SQL,就像我对她所做的那样。 每个作业步骤可能有一个与之相关联的不同子系统。

  接下来,单击新作业步骤的“高级”选项卡。您将看到如图3所示的屏幕。On success操作定义作业步骤成功完成后发生的操作。默认选项是转到下一步,这意味着如果作业中有多个步骤,而这一项工作,则执行下一步。如果单击下拉列表,您将看到其他选项,包括退出作业(包含成功或失败通知),或跳转到另一个步骤。请注意,最后一个选项,跳到另一个步骤,将不会出现,直到您正在工作,至少你的第二步在一项工作。

在这里插入图片描述
图3: 新职务步骤高级选项

  如果某个步骤由于某种原因失败,则可以选择重试作业步骤的尝试次数。您还可以指定成功完成作业步骤的每次尝试之间的延迟(以分钟为单位)。下面是失败操作(即作业步骤无法完成或以错误代码结尾)。这些选项与成功时相同,具有不同的默认值(正如您可能预期的那样)。

  因为这是Transact-SQL作业步骤类型,所以可以将Transact-SQL命令的任何输出记录到输出文件中(就像sqlcmd中的-o选项)。还可以将结果记录到 表(MSDB中的SYSTORBSTRPS日志表)。

  单击“确定”,然后单击“新建”将第二步添加到作业。假设步骤1未生成错误,则下一个作业将上一步备份主数据库。这里是我系统的命令(如图 关于第4条):

BACKUP DATABASE [master] TO  DISK =
N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\master.bak'
WITH INIT

在这里插入图片描述
图4: 备份主数据库的第二个作业步骤

  由于这是作业的结束,请单击“高级”选项卡,然后选择“停止作业报告成功”操作。就这样-您应该可以单击OK,并查看已完成的作业 步骤,如图5所示。

在这里插入图片描述
图5: 已完成的作业

  现在单击OK完成作业定义,并运行作业。单击以运行作业时,请注意,因为有多个步骤,您现在被问到要使用哪个步骤开始作业。运行 第一步中的作业(如图6所示),并在第一步成功运行时观察作业的流程,然后移动到作业的第二步,也就是最后一步。

在这里插入图片描述
 *图6: 从步骤开始作业(选择步骤1)

  一旦成功完成,作业将被标记为成功并退出(如图7所示)。

在这里插入图片描述
图7: 作业已成功运行


Job Subsystems作业子系统

您将使用七个主要作业子系统。这个数字不包括复制子系统,因为它们是特例,通常这些作业步骤和作业是由复制组件而不是由DBA创建的。我们将把对三个AnalysisServices子系统的讨论推迟到下一个级别,因为它们有几个独特的考虑因素。

Transact-SQL Script (T-SQL)处理SQL脚本(TSQL)

  Transact-SQL子系统非常直截了当,很可能是您将要创建的最常见的作业步骤。它允许您针对此SQLServer代理实例所属的SQLServer的本地实例运行TransactSQL(但不对TransactSQL的SQL的NOTsqlcmd扩展)。注意,与AnalysisServices子系统不同,您只能连接到本地SQLServer实例。还请注意,Transact-SQL没有代理功能,因此T-SQL的作业步骤总是在作业所有者的安全上下文中运行。

ActiveX ScriptActiveX脚本

  ActiveX子系统允许您运行VBScript、JScript或其他自定义脚本语言(理论上)。默认情况下,脚本将在SQLServer代理服务帐户的安全上下文中运行。如果您精通VBScript,这可能是一个方便的子系统,但该子系统在SQLServer 2008时已被废弃,您应该使用PowerShell子系统。

Operating System (CmdExec)操作系统(CmdExec)

  CmdExec子系统允许您运行操作系统命令(就像打开命令提示符一样)。这些命令将在SQLServer代理服务帐户的安全上下文中运行。这里(以及ActiveX子系统)要记住的关键是,没有用户能够单击或接受任何提示,因此确保脚本将在没有用户干预的情况下运行。

PowerShell

  PowerShell子系统允许您运行与WindowsPowerShell1.0或2.0兼容的脚本。与其他脚本子系统一样,默认情况下,脚本将在SQL的安全上下文中运行。 服务器代理服务帐户。Powershell非常强大,您应该认真研究如何提高对PowerShell的了解。Powershell将允许您连接到远程系统,因此这是绕过Transact-SQL子系统连接到SQLServer远程实例的限制的一种方法。

Next Time下次

  如您所见,SQLServer代理作业步骤是作业内容的核心。有许多不同的子系统可用,每个子系统都提供了不同的功能。在本阶段的下一步中,我将检查代理功能,以增强作业步骤的安全性,以及用于AnalysisServices的其余SQL代理子系统。

    作业已成功运行本文是SQLServer代理的父级楼梯的一部分。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值