本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文


SQL Server代理作业由一系列的一个或多个作业步骤组成。一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作)。每个作业步骤运行于一个单独的安全上下文,尽管每个作业有一个所有者来决定谁可以修改作业。本篇主要关注组成SQL Server代理的作业步骤和子系统。
快速回顾作业
理解SQL Server代理作业的最佳方式是把相关联的 需要完成给定任务 的组件放在一个容器中。作业最主要的组件有作业步骤、计划、警告和通知。
当创建作业时,一个所有者会被分配给这个作业。第一篇中提到,创建作业的用户默认是作业的所有者(无论是通过sp_add_job系统存储过程创建,还是通过SSMS创建)。大部分情况下SQL Server代理,假设你是一个sysadmin服务器角色的成员。如果你是,那么你或任何其他sysadmin角色成员可以修改作业。如果你想要一个非sysadmin角色的成员能够修改作业,那么你应该更改作业的所有者成对应用户。注意系统管理员成员可以更改任何作业,无论作业所有者。
作业步骤
如第一篇所述,一个SQL Server代理作业至少包含一个步骤。当大多数人说作业能完成一些工作时,实际意味是一个作业步骤。作业步骤是根据需求操作定义的,每个作业步骤将由下列子系统执行:
->ActiveX 脚本
->操作系统(CMDExec)
->PowerShell
->复制系列任务
->SQL Server Analysis Services (SSAS) 命令
->SQL Server Analysis Services (SSAS) 查询
->SQL Server Integration Services (SSIS) 包
->Transact-SQL 脚本 (T-SQL)
让我们创建一个作业,新建作业步骤用来备份master数据库。创建一个新作业-Backup Master,如图2.1所示。

图2.1 创建一个新作业
点击步骤->新建,看到新建作业步骤对话框(图2.2)

图2.2 创建一个作业步骤
我已经填写了这个作业的步骤,在我们备份master数据库前先执行完整性检查。我原本可以在一个步骤中完成所做的一切,但要告诉你的步骤之间的作业流程。我给这个步骤取名“检查Master数据库完整性”,并设置类型为T-SQL,数据库是mater,命令文本框DBCC CHECKDB
这个对话框的一些解释:在类型的下拉列表可以选择SQL Server代理子系统。子系统将在下面描述。对于选择Transact-SQL类型的作业步骤是没有安全代理帐户的,因此作业步骤将在作业所有者的上下文运行。安全代理帐户使作业步骤可以运行一个不同的用户的安全上下文,通常用于作业所有者是非sysadmin角色成员。
你所选择的作业子系统,将改变其余的对话内容。对于Transact-SQL作业步骤,一个简单的文本框提供键入你所需的SQL语句。每一个作业步骤可能会有一个不同的子系统与之关联。
接着,在作业步骤属性,点击高级选项卡。你会看到图2.3所示的对话框。成功时要执行的操作(定义作业步骤成功完成时会做的操作)。默认选项是转到下一步,意味着如果在作业中有多个步骤,这个步骤完成,执行下一步。如果你点击下拉菜单,你会看到其他选项–包括退出作业(无论成功或失败通知),或跳到另一个步骤。请注意最后一个选项,跳到另一个步骤,不会出现直到你作业中至少有两个步骤。

图2.3 作业步骤高级选项
如果一个步骤因为某种原因而失败,你可以设置作业步骤重试次数。你也可以指定每次重试间隔(分钟)。下面是失败时要执行的操作(例如作业步骤无法完成或出现错误代码)。下拉选项和成功时是一样的,但是默认选项不一样(如你所期望的)。
因为这是一个Transact-SQL类型的作业步骤,你可以用SQL命令输出一个输出文件(就像在sqlcmd -O选项)。你也可以记录结果到一张表里(msdb中sysjobstepslogs表)。
单击确定,然后单击添加第二个步骤。如果步骤1中没有产生错误,下一个作业步骤备份master数据库。这是我的备份命令(如图2.4所示):

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


图2.4 第二个作业步骤
因为这是作业的结尾,单击“高级”选项卡并选择成功的操作“退出报告成功的作业”。你可以点击确定,看完成的作业步骤如图2.5所示

图2.5 完成作业
现在单击确定完成作业的创建,运行作业。当你点击运行作业,因为这个作业有多个步骤,因此会弹出一个对话框让你选择从哪个步骤启动作业。从第一步启动作业(如图2.6所示),注意观察作业流程在第一步成功后,移动到作业的第二步/最后一步。

图2.6 启动作业(选择步骤1)
一旦成功完成,作业标记为成功然后退出。
作业子系统
有七个主要的作业子系统是我们会使用到的。这个数字不包括复制子系统作为他们的一个特例,通常这些作业是由复制组件而不是由DBA创建。我们将推迟下一章节讨论三个分析服务子系统,因为他们有一些独特的事项。
Transact-SQL 脚本 (T-SQL)
Transact-SQL子系统是非常直接的,同时可能是作业步骤中最常见的类型。它允许你运行Transact-SQL(但不是sqlcmd扩展SQL SQL服务器处理)处理对这个SQL Server代理实例关联的本地实例。需要注意的是不同于分析服务子系统,你只能连接到本地SQL Server实例。同时注意T-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 Server远程实例受限制的方式。
下一篇
正如你可以看到,SQL Server代理作业步骤是作业的核心。许多不同的子系统是可用的,每个给你不同的功能。在下一篇,我会检查作业步骤上代理能力以提高安全,以及剩余的分析服务子系统。

第二篇 SQL Server代理作业步骤和子系统的更多相关文章

  1. 【译】第二篇 SQL Server代理作业步骤和子系统

    本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作). ...

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

    本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这一系列的上一篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作 ...

  3. 【译】第七篇 SQL Server代理作业活动监视器

    本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这一系列的上一篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作 ...

  4. 第五篇 SQL Server代理理解代理错误日志

    本篇文章是SQL Server代理系列的第五篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.在第四篇中我们看到 ...

  5. 【译】第五篇 SQL Server代理理解代理错误日志

    本篇文章是SQL Server代理系列的第五篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.在第四篇中我们看到 ...

  6. 第六篇 SQL Server代理深入作业步骤工作流

    本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...

  7. 【译】第六篇 SQL Server代理深入作业步骤工作流

    本篇文章是SQL Server代理系列的第六篇,详细内容请参考原文. 正如这一系列的前几篇所述,SQL Server代理作业是由一系列的作业步骤组成,每个步骤由一个独立的类型去执行.每个作业步骤在技术 ...

  8. 第九篇 SQL Server代理了解作业和安全

    本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...

  9. 【译】第九篇 SQL Server代理了解作业和安全

    本篇文章是SQL Server代理系列的第九篇,详细内容请参考原文 在这一系列的上一篇,学习了如何在SQL Server代理作业步骤启动外部程序.你可以使用过时的ActiveX系统,运行批处理命令脚本 ...

随机推荐

  1. Robocopy

    用法: http://technet.microsoft.com/zh-cn/library/cc733145%28v=ws.10%29.aspx   图形化工具: http://sourceforg ...

  2. 重命名Administrator账号

    (Get-WmiObject -class Win32_UserAccount | where {$_.SID -Like 'S-1-5-*-500'}).Rename("Ultraman& ...

  3. 【iCore2 双核心板视频教程一】iM_LAN 100M 以太网模块UDP例程(包含视频教程)

    ============================== 技术论坛:http://www.eeschool.org 博客地址:http://xiaomagee.cnblogs.com 官方网店:h ...

  4. avira更新时候安装了launcher

    用不上红伞其他的软件,一个登录选择器就显得多余.可能是长时间没用电脑,更新给装上了启动器. 本文以时间顺序而记录 ------------------------------------------- ...

  5. [转]常用 Git 命令清单

    作者: 阮一峰 我每天使用 Git ,但是很多命令记不住. 一般来说,日常使用只要记住下图6个命令,就可以了.但是熟练使用,恐怕要记住60-100个命令. 下面是我整理的常用 Git 命令清单.几个专 ...

  6. 动态样式语言Less学习笔记

    介绍资料参见:http://www.bootcss.com/p/lesscss/ LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承,运算, 函数. LESS 既可以在 客户端 上运行 (支 ...

  7. Memcache技术分享:介绍、使用、存储、算法、优化、命中率

    1.memcached 介绍 1.1 memcached 是什么? memcached 是以LiveJournal旗下Danga Interactive 公司的Brad Fitzpatric 为首开发 ...

  8. miniproject black jack--Fail

    第一部分 下载这个小项目的程序模板并回顾card类的定义.这个类已经执行了所以你的任务是自己熟悉下代码.开始,通过粘贴card类定义到程序模板中并验证我们的代码如预期那样工作. 实现“__init__ ...

  9. ubuntu挂载其他分区到/home下,将当前分区内容替换

    有时候,我们装系统时,可能因为没注意,把某一个分区分小了,导致到最后,我们的那个盘容不下了, 这时,面临的两个选择就是:要么卸载一些软件,要么重新分区,重装系统,其实,还可以这样,去把其他 多余的盘分 ...

  10. taocode

    http://code.taobao.org/project/lang/list/Go/1/