翻译:通往SQL Server代理的阶梯-二级:作业步骤和子系统

通往SQL Server代理的阶梯-二级:作业步骤和子系统
Richard Waymire,2017/10/11(首次出版:2011/02/17)
该系列
本文是楼梯系列的一部分:SQL Server代理的阶梯
SQL Server代理是任何实时数据库系统的核心。代理有许多不太明显的用途,因此对于开发人员和dba来说,系统的知识总是有用的。Richard Waymire提供了一个简单的解释。
SQL Server代理作业是由一系列的一个或多个作业步骤组成的。一个作业步骤被分配到一个特定的工作子系统,它确定了工作步骤将要执行的工作类型。每个作业步骤都在一个单独的安全上下文中运行,尽管每个作业也有一个所有者决定谁可以修改该作业。本文将重点讨论组成sqlserver代理作业的作业步骤和子系统。
快速回顾一下工作
认为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代理子系统。
本文是通往SQL Server Agent楼梯的楼梯的一部分
在我们的RSS订阅中注册,当我们在楼梯上发布一个新级别的时候就会得到通知!


 

原文地址:https://www.cnblogs.com/yyyz516/p/8232745.html

时间: 2024-10-10 12:18:10

翻译:通往SQL Server代理的阶梯-二级:作业步骤和子系统的相关文章

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

  翻译(十四)——通往SQL Server代理的阶梯-二级:作业步骤和子系统 Richard Waymire,2017/10/11(首次出版:2011/02/17) 链接: http://www.sqlservercentral.com/articles/SQL+Agent/Job+Steps+and+Subsystems/72268/ 该系列 本文是楼梯系列的一部分:SQL Server代理的阶梯 SQL Server代理是任何实时数据库系统的核心.代理有许多不太明显的用途,因此对于开发人员

SQL Server代理(2/12):作业步骤和子系统

SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. SQL Server代理作业有一系列的一个或多个作业步骤组成.一个作业步骤会分配给特定的作业子系统,用来标识将要进行的作业步骤工作种类.每个作业步骤在各自安全上下文运行,尽管每个作业有可以决定谁可以修改作业的拥有者.这篇文章会聚焦组成SQL Server代理作业的作业步骤和子系统. 作业的快速回顾 认为SQL Server代理作业的最好方式

#翻译#通往SQL Server安全级别2的阶梯:身份验证; 唐?吉利; 原文链接:Stairway to SQL Server Security Level 2: Authentication http://www.sqlservercentral.com/articles/Stairway+Series/109975/

这篇文章是楼梯系列的一部分:通往SQL Server安全的阶梯 SQL Server拥有您需要的所有东西来保护您的服务器和数据以抵御今天的复杂攻击.但是在您能够有效地使用这些安全特性之前,您需要了解您所面临的威胁和一些基本的安全概念.第一个阶梯级提供了一个基础,这样您就可以充分利用SQL服务器的安全特性,而不必浪费时间来防止对数据的特定威胁. 身份验证是验证一个君主国--一个需要访问SQL Server数据库的用户或进程--是谁或它声称是什么的过程.一个主体需要唯一的标识,以便SQL Serve

翻译:SQL Server复制的阶梯:第1级 - SQL Server复制

简介 作者:Sebastian Meine, 2012年12月26日 该系列 本文是Stairway系列的一部分:SQL Server复制的阶梯 SQL Replication可以解决运行数据库驱动的应用程序中的许多问题.发布/订阅者模型不是很容易理解,脚本和监视复制系统的复杂性需要一些思考.最后,这是一系列文章,它们负责制作所有类型的SQL Server Replication的无术语方法. 第1级:SQL Server复制简介 主要条目:rep-li-ca-tion 发音:\?re-pl?-

SQL Server代理(11/12):维护计划作业

SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这一系列的上一篇,我们看了使用代理帐户模仿Windows安全上下文完成作业步骤的工作.大多数子系统支持代理账户,同时子系统限制代理账户, 要求用户必须明确授权可以在作业步骤使用代理凭据.在这一篇,你将检查维护计划.维护计划是用来执行各种任务来优化你的数据库,包括备份.重建和/或重整 索引.更新统计.维护计划会创建作业.这一篇我们将查看维护

SQL Server代理(8/12):使用SQL Server代理外部程序

SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在这个系列的上篇文章里,你学习如何使用SQL Server代理作业活动监视器监视作业活动和查看作业历史.对于你的SQL Server代理作业进行实时监视和管理,作业活动管理器是个强大的工具.在这个系列的第8篇文章里,你会回顾SQL Server代理的另一个功能——运行操作系统命令行,在SQL Server外围环境运行程序.一些程序是命令行(

第一篇 SQL Server代理概述

本系列文章来源于sqlservercentral,详细内容请参考原文. SQL Server代理是SQL Server的作业调度和告警服务,如果使用得当,它可以大大简化DBA的工作量.SQL Server代理的核心是运行批量作业的能力.“批量”可以简单的理解成“一系列的动作”,经常是TSQL脚本.它们可以以作业的形式在特定的调度运行,这个调度你可以选择在只有少量用户访问系统的时间点/段.换而言之,可以使用SQL Server代理排定批量作业.批量作业可以是平常的T-SQL任务,也可以是运行于多个

第七篇 SQL Server代理作业活动监视器

本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这系列的前几篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作业活动监视器.作业活动监视器是系统管理工具来运行工作,查看作业历史记录,并启用/禁用作业.本文同样会回顾一些作业活动监视器调用的存储过程,你可以直接调用过程做你自己的自定义任务监控.SQL Server代理作业活动监视器SQL Server代理作业活动监视器的主要机制是监视作业运行,以及查看代理已运行

第八篇 SQL Server代理使用外部程序

本篇文章是SQL Server代理系列的第八篇,详细内容请参考原文 在这系列的前几篇,学习了如何用SQL Server代理作业活动监视器监控作业活动和查看作业历史记录.在实时监控和管理SQL Server代理作业上,作业活动监视器是一个很好的工具.第八篇,你会看到SQL Server代理的另一个功能——the ability to shell out to the operating system and run programs outside of the SQL Server enviro