翻译(十四)——通往SQL Server代理的阶梯-二级:做业步骤和子系统

              翻译(十四)——通往SQL Server代理的阶梯-二级:做业步骤和子系统sql

Richard Waymire,2017/10/11(首次出版:2011/02/17)shell

 连接: http://www.sqlservercentral.com/articles/SQL+Agent/Job+Steps+and+Subsystems/72268/数据库

该系列安全

本文是楼梯系列的一部分:SQL Server代理的阶梯服务器

SQL Server代理是任何实时数据库系统的核心。代理有许多不太明显的用途,所以对于开发人员和dba来讲,系统的知识老是有用的。Richard Waymire提供了一个简单的解释。sqlserver

SQL Server代理做业是由一系列的一个或多个做业步骤组成的。一个做业步骤被分配到一个特定的工做子系统,它肯定了工做步骤将要执行的工做类型。每一个做业步骤都在一个单独的安全上下文中运行,尽管每一个做业也有一个全部者决定谁能够修改该做业。本文将重点讨论组成sqlserver代理做业的做业步骤和子系统。spa

 

快速回顾一下工做操作系统

认为SQL Server代理做业的最佳方式是将执行给定任务所需的其余组件的集合相关联的容器。工做的主要组成部分是工做步骤、进度、警报和通知。翻译

当一个任务被建立时,一个全部者被分配到该任务中。正如第1级所提到的,默认状况下,全部者将是建立工做的用户(经过transact - SQL、经过sp_add_job系统存储过程或使用SQL Server Management Studio)。SQL Server代理的大多数功能都假定您是一个sysadmin服务器角色成员。若是您是,那么您或任何其余sysadmin角色成员能够在建立工做后修改该工做。若是您但愿一个非sysadmin角色成员可以修改该做业,那么您应该更改该用户的登陆名。请注意,sysadmin成员能够更改任何工做,而不考虑工做全部权。代理

 

工做的步骤

如第1级所述,SQL Server代理做业由至少一个做业步骤组成。当大多数人想到一份工做的时候,他们对SQL Server的真正含义是工做步骤。做业步骤由您但愿执行的操做类型定义,每一个做业步骤将由下列工做子系统中的一个执行:

 

ActiveX

操做系统(CMDExec)

Powershell

各类复制任务

SQL Server Analysis Services(SSAS)命令(即XML /A)

SQL Server Analysis Services(SSAS)查询(MDX)

SQL Server Integration Services(SSIS)包(SQL Server 2000中的DTS包)

transact - sql脚本(t - sql)

 

让咱们建立一个做业和必要的做业步骤,以备份主数据库。建立一个新工做,我将其称为“备份主”,如图1所示。

 

图1 -建立新工做

 

如今单击步骤选项卡来查看工做步骤,并单击New…弹出新的做业步对话框(图2)。

图2 -建立新的工做步骤

 

在开始备份以前,我已经填写了这个任务的步骤,以执行主数据库的完整性检查。我本能够一步一步地完成全部工做,可是我想让您知道步骤之间的工做流程。我已经给出了个人步骤名称,“检查主数据库的完整性”,并将类型设置为transact - sql。数据库上下文是master。我在文本框中添加了一个简单的命令:

DBCC CHECKDB

为了这个对话,有几个解释。类型下拉是选择SQL Server代理子系统的地方。下面将描述可能的子系统。没有用于transact - sql做业步骤的安全代理账户,所以做业步骤将在做业全部者的上下文中运行。安全代理账户容许使用不一样用户的安全上下文运行做业步骤,而且一般用于不属于sysadmin角色成员的做业。

您选择的做业子系统将会更改对话框其他部分的内容。对于transact - sql做业步骤,提供了一个简单的文本框,供您输入transact - sql,就像我在这里所作的那样。每一个做业步骤可能有一个与之相关的不一样子系统。

接下来,单击new job步骤的Advanced选项卡。您将看到如图3所示的屏幕。On success动做定义了成功完成工做步骤后所发生的事情。默认选项是进入下一个步骤,意思是若是在一个做业中有多个步骤,而这个工做,执行下一个步骤。若是您单击下拉菜单,您将看到其余选项——包括退出工做(得到成功或失败通知),或跳转到另外一个步骤。注意最后一个选项,跳到另外一个步骤,直到你至少在工做的第二步才出现。

 

图3 -新工做步骤高级选项

 

若是一个步骤因某种缘由而失败,您能够选择能够从新尝试工做步骤的尝试次数。您还能够在每次尝试成功完成做业步骤之间指定一个延迟(分钟)。下面是失败操做(即工做步骤没法完成或以错误代码结束)。选项与成功的选项是同样的,有不一样的缺省值(正如您所指望的那样)。

由于这是transact - sql做业步骤类型,您能够将transact - sql命令的任何输出记录到输出文件(就像sqlcmd中的- o选项)。您还能够将结果记录到一个表中(MSDB中的sysjobstepslogs表)。

单击OK,而后单击New以添加到该做业的第2步。假设第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 -做业已成功运行

 

工做子系统

您将使用7个主要的工做子系统。这个数字不包括复制子系统,由于它们是一个特殊的状况,一般这些工做步骤和做业是由复制组件建立的,而不是由DBA建立的。咱们将把对三个分析服务子系统的讨论推迟到下一个级别,由于它们有几个独特的考虑。

 

transact - sql脚本(t - sql)

 

transact - sql子系统很是简单,极可能是您将建立的最多见的工做步骤。它容许您针对SQL Server代理的本地实例运行transact - SQL(但不是sqlcmd扩展到transact - SQL)。注意,与分析服务子系统不一样,您只能链接到本地SQL服务器实例。还要注意,transact - sql没有代理能力,所以t - sql的做业步骤老是在做业全部者的安全上下文中运行。

 

ActiveX脚本

 

ActiveX子系统容许您运行VBScript、Jscript或其余自定义脚本语言(在理论上)。默认状况下,脚本将在SQL Server代理服务账户的安全上下文中运行。若是您精通VBScript,这多是一个方便的子系统,可是子系统已被弃用为SQL Server 2008,您应该使用PowerShell子系统。

 

操做系统(CmdExec)

 

CmdExec子系统容许您运行操做系统命令(就像您有一个命令提示符打开同样)。命令将在SQL Server代理服务账户的安全上下文中运行。这里要记住的关键是(在ActiveX子系统中),没有用户可以单击或接受任何提示,因此请确保您的脚本在没有用户干预的状况下运行。

 

PowerShell

 

PowerShell子系统容许您运行Windows PowerShell 1.0或2.0兼容脚本。与其余脚本子系统同样,默认状况下脚本将在SQL Server代理服务账户的安全上下文中运行。PowerShell很是强大,您应该认真研究一下您对PowerShell的了解。PowerShell将容许您链接到远程系统,所以这是一个绕过transact - SQL子系统链接到远程SQL服务器实例的方法。

 

下次

如您所见,SQL Server代理做业步骤是工做内容的核心。有许多不一样的子系统可供使用,每一个子系统提供不一样的功能。在此楼梯的下一步中,我将检查代理功能,以加强对做业步骤的安全性,以及用于分析服务的其余SQL代理子系统。

相关文章
相关标签/搜索