资讯专栏INFORMATION COLUMN

SQL Server 代理进阶 - Level 2 :作业步骤和子系统

dayday_up / 1048人阅读

摘要:本文将重点介绍组成代理作业的作业步骤和子系统。工作的主要组成部分是工作步骤,时间表,警报和通知。我在文本框中输入一个简单的命令有几个解释是为了这个对话。对于作业步骤,提供了一个简单的文本框供您键入,如我在此处所做的那样。

作者:Richard Waymire,2017/10/11(第一版:2011/02/17)

关于系列

本文属于Stairway系列:Stairway to SQL Server Agent

SQL Server Agent是任何实时数据库系统的核心。 代理有许多用途并不总是显而易见的,因此对于开发人员和DBA来说,系统知识总是有用的。 理查德Waymire提供了一个简单的解释,它的许多用途。

SQL Server代理作业由一系列一个或多个作业步骤组成。作业步骤被分配给特定的作业子系统,该作业子系统标识作业步骤要执行的作业种类。每个作业步骤都在多带带的安全上下文中运行,尽管每个作业也都有一个拥有者来决定谁可以修改作业。本文将重点介绍组成SQL Server代理作业的作业步骤和子系统。

快速审查工作

思考SQL Server代理作业的最佳方法是将一组其他组件关联起来,这些组件是执行给定任务所需的。工作的主要组成部分是工作步骤,时间表,警报和通知。

创建作业时,将所有者分配给作业。如第1级中所述,默认情况下,所有者将是创建作业的用户(在Transact-SQL中,通过sp_add_job系统存储过程或使用SQL Server Management Studio)。 SQL Server代理的大部分功能假定您是系统管理员角色成员。如果您是,那么您或任何其他系统管理员角色成员可以在创建作业后对其进行修改。如果您希望非系统管理员角色成员能够修改作业,则应该将作业所有者更改为该用户的登录名。请注意,系统管理员成员可以更改任何作业,而不考虑作业所有权。

工作步骤

如第1级中所述,SQL Server代理作业至少由一个作业步骤组成。 当大多数人想到从事某项工作的工作时,他们对于SQL Server的真正意义是一个工作步骤。 作业步骤由您希望执行的操作类型定义,每个作业步骤将由以下作业子系统之一执行:

ActiveX

Operating System (CMDExec)

Powershell

A variety of replication tasks

SQL Server Analysis Services (SSAS) Command (i.e. XML/A)

SQL Server Analysis Services (SSAS) Query (MDX)

SQL Server Integration Services (SSIS) Package (DTS Package in SQL Server 2000)

Transact-SQL Script (T-SQL)

让我们创建一个作业和必要的作业步骤,备份主数据库。 创建一个新的工作,我叫我的“备份主”,如图1所示。


图1 - 创建一个新的工作

现在点击Steps选项卡查看作业步骤,然后点击New ...打开New Job Step对话框(图2)。

图2 - 创建一个新的工作步骤

我已经完成了这个工作中的步骤,在开始备份之前对master数据库进行完整性检查。我可以一步完成所有工作,但是要在步骤之间向您展示工作流程。我已经给出了“检查主数据库完整性”的名称,并将类型设置为Transact-SQL。数据库上下文是主。我在文本框中输入一个简单的命令:

DBCC CHECKDB

有几个解释是为了这个对话。 “类型”下拉列表是选择SQL Server代理子系统的位置。下面将描述可能的子系统。 Transact-SQL作业步骤没有安全代理帐户,所以作业步骤将在作业所有者的上下文中运行。安全代理帐户使作业步骤能够与不同用户的安全上下文一起运行,并且通常用于不属于sysadmin角色成员的作业。

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

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

图3 - 新的作业步骤高级选项

如果由于某种原因某个步骤失败,则可以选择可以尝试重试该作业步骤的次数。 您也可以在每次尝试成功完成作业步骤之间指定延迟(以分钟为单位)。 下面是失败操作(即作业步骤无法完成或以错误代码结束)。 选项与成功相同,使用不同的默认值(如您所期望的)。

由于这是Transact-SQL作业步骤类型,因此可以将Transact-SQL命令的任何输出记录到输出文件(就像sqlcmd中的-o选项一样)。 您也可以将结果记录到一个表(MSDB中的sysjobstepslogs表)。

单击确定,然后单击新建以向作业添加第二步。 假定步骤1没有产生错误,则下一步作业将备份主数据库。 这里是我的系统的命令(如图4所示):

BACKUP DATABASE [master] TO  DISK =
N"C:Program FilesMicrosoft SQL ServerMSSQL10_50.MSSQLSERVERMSSQLBackupmaster.bak"
WITH INIT


图4 - 备份主数据库的第二个作业步骤

由于这是作业的结束,请单击“高级”选项卡,然后选择“成功”操作为“退出作业报告成功”。就是这样 - 您应该能够单击“确定”并查看已完成的作业步骤,如图所示5。

图5 - 完成的工作

现在单击确定完成定义作业,并运行作业。 当您点击运行作业时,请注意,因为您现在被问到多个步骤,您想要从哪个步骤开始作业。 从第一步开始执行作业(如图6所示),并在第一步成功运行时观察作业流程,然后转到作业的第二步和最后一步。

图6 - 在步骤开始作业(选择步骤1)

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

图7 - 作业已成功运行

作业子系统

有七个主要的工作子系统,你会使用。此数字不包括复制子系统,因为它们是特殊情况,通常这些作业步骤和作业是由复制组件创建的,而不是由DBA创建的。我们将推迟讨论三个分析服务子系统,因为它们有几个独特的考虑因素。

Transact-SQL脚本(T-SQL)

Transact-SQL子系统非常简单,可能是您创建的最常见的作业类型。它允许您针对SQL Server代理所附属的SQL Server本地实例运行Transact-SQL(但不包括对Transact-SQL的sqlcmd扩展)。请注意,与Analysis Services子系统不同,您只能连接到本地SQL Server实例。另请注意,Transact-SQL没有代理功能,因此T-SQL的作业步骤始终在作业所有者的安全上下文中运行。

ActiveX脚本

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

操作系统(CmdExec)

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

电源外壳

PowerShell子系统允许您运行兼容Windows PowerShell 1.0或2.0的脚本。与其他脚本子系统一样,该脚本将默认在SQL Server代理服务帐户的安全上下文中运行。 PowerShell非常强大,您应该认真研究增长PowerShell的知识。 PowerShell将允许您连接到远程系统,所以这是解决Transact-SQL子系统连接到SQL Server远程实例的一个方法。

下次

正如您所看到的,SQL Server Agent作业步骤是作业内容的核心。许多不同的子系统是可用的,每个子系统都有不同的功能。在这个阶段的下一个步骤中,我将研究代理功能以增强作业步骤的安全性,以及Analysis Services的其他SQL代理子系统。


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32205.html

相关文章

  • SQL Server 复制进阶Level 1 - SQL Server 复制

    摘要:如果影响已发布对象的更改发生了,那么这些更改将记录在分发数据库中的分发服务器上。运行分发服务的机器还将包含分发数据库。图分发数据库在这里指定分发数据库的名称以及数据和日志文件的位置。 塞巴斯蒂安·梅内,2012/12/26 关于系列 本文是属于Stairway系列:Stairway to SQL Server Replication SQL复制可以解决运行数据库驱动的应用程序中的许多问...

    xiaokai 评论0 收藏0
  • AlwaysOn 进阶 Level 1:What is "SQL Server Alway

    摘要:在这个阶梯中,您将学习技术,它们如何适应高可用性堆栈,以及如何充分利用它们。我们将详细介绍每个细节并总结它们所在的高可用性堆栈的位置。该限制是在安装程序级别执行的。异步副本仅支持手动强制故障转移,而同步副本支持自动或手动故障转移。 By Perry Whittle,2016/02/24(首次发布:2014/09/24) 关于系列 本文属于进阶系列:Stairway to AlwaysO...

    huashiou 评论0 收藏0
  • SQL Server索引简介:SQL Server索引进阶 Level 1

    摘要:此外,非聚簇索引条目具有一些仅内部使用的头信息,并且可能包含一些可选信息。这两个都将在以后的层面上予以涵盖此时对于非聚簇索引的理解也不重要。 作者:David Durant,2014/11/05(首次发布:2011/02/17) 关于系列 本文属于进阶系列的:Stairway to SQL Server Indexes 索引是数据库设计的基础,并告诉开发人员使用数据库大量关于设计人员的...

    Lionad-Morotar 评论0 收藏0
  • 阅读查询计划:SQL Server 索引进阶 Level 9

    摘要:图形查询计划查询计划是执行查询的一组指令。哈希如果传入数据的顺序不合适,可能会使用散列操作对数据进行分组。另一方面会导致大量的群体,每个群体都需要自己的记忆空间可能消耗太多内存,哈希成为解决查询的不良技术。有关查询计划散列的 David Durant,2011/10/05 关于系列 本文是属于Stairway系列:Stairway to SQL Server Indexes 索引是数据...

    ysl_unh 评论0 收藏0
  • mysql sql语句大全(MySQL语句 整理)

    摘要:分组一张表,一旦分组完成后,查询后只能得到组相关的信息。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。为时,不返回计数表示受语句影响的行数。 mysql sql语句大全(MySQL语句 整理) 整理加入DESC 降序ASC 升序 复制代码 1、说明:创建数据库CREATE DATABASE database-name2、说明:删...

    gekylin 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<