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

摘要:
SQL Server代理是所有实时数据库的核心。本文将重点介绍构成SQLServer代理作业的作业步骤和子系统。对作业的快速回顾表明,SQLServer代理作业的最佳方法是关联一系列需要执行指定任务的组件容器。SQLServer代理的大多数功能都假定您是sysadmin服务器角色的成员。下拉框类型用于选择SQL Server代理子系统。T-SQL脚本T-SQL子系统非常直接,是您创建的最常见的作业步骤。该命令将在SQL Server代理服务帐户的安全上下文中运行。PowerShell允许您连接到远程系统,因此这是为了绕过T-SQL子系统的限制并连接到远程SQL Server实例。

SQL Server代理是所有实时数据库的核心。代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的。这系列文章会通俗介绍它的很多用法。


SQL Server代理作业有一系列的一个或多个作业步骤组成。一个作业步骤会分配给特定的作业子系统,用来标识将要进行的作业步骤工作种类。每个作业步骤在各自安全上下文运行,尽管每个作业有可以决定谁可以修改作业的拥有者。这篇文章会聚焦组成SQL Server代理作业的作业步骤和子系统。

作业的快速回顾

认为SQL Server代理作业的最好方式是关联一系列需要进行指定任务的组件的容器。作业的主要组件是作业步骤,计划,警报和通知。

当作业被创建时,拥有者会分配给作业。如第一篇提到的,默认的拥有者会是创建作业的用户(不管使用T-SQL,通过sp_add_job系统存储过程或使用SSMS)。SQL Server代理的大部分功能假设你是sysadmin服务器角色成员。如果是的话,一旦作业创建后,那么你或任何其他sysadmin服务器角色成员可以修改作业。如果你想非sysadmin服务器角色成员可以修改作业,那么你应该修改作业拥有者为登录的用户。注意sysadmin成员可以修改任何作业,不管作业拥有者是谁。

作业步骤

如第一篇提到的,SQL Server代理里的作业至少要有一个作业步骤组成。当大多数人想SQL Server代理进行一些工作时,他们真正的意思是作业步骤。作业步骤是你定义的想要进行的行动类型,包括一下能运行的作业子系统:

  • ActiveX
  • 操作系统(CMD的运行)
  • PowerShell
  • 各种复制任务
  • SQL Server分析服务(SSAS)命令(例如XML/A)
  • SQL Server分析服务(SSAS)查询(MDX)
  • SQL Server集成服务(SSIS)包(SQL Server 2000li de DTS包)
  • T-SQL脚本

我们来创建一个作业,至少需要一个作业步骤,备份Mater数据库。创建一个新的作业,如插图1所示,我命名它为"备份Master数据库"。

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

插图1——创建新的作业

现在点击【步骤】标签来查看作业步骤,点击【新建】弹出【新建作业步骤】对话框(插图2)。

在我们进行备份前,我在这个作业步骤里进行master数据库的完整性检查。我可以在一个步骤里完成所有操作,但这里我想向你展示下步骤间的作业流。我取我的作业名称为“检查Mater数据库的完整性”,类型设置为T-SQL。数据库上下文是mater,我在文本框里输入了一个简单的命令:

1 DBCC CHECKDB

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

插图2——创建新的作业步骤

对这个对话框做一些简单解释。下拉框类型是用来选择SQL Server代理子系统。可选的子系统在下面会解释。对于T-SQL作业步骤没有安全代理账号,因此作业步骤会在作业拥有者的上下文里运行。安全代理账号可以让作业步骤以不同用户安全上下文运行,通常给作业使用而不是sysadmin组成员。

你选择的作业子系统会改变对话框的剩余内容。对于T-SQL的作业步骤,一个简单的文本框会给你输入你的T-SQL,如我这里所做的。每个作业步骤会有不同相关的子系统。

接下来,点击作业步骤里的【高级】。你会看到如插图3所示的界面。【成功要执行的步骤】定义一旦作业步骤成功执行将发什么的事。默认选项是【转到下一步】,意味着如果作业里有多个作业步骤,这步完成后,执行下一步。如果点击下拉框,你会看到其他选项——包括现存的作业(成功或失败的提醒),或跳转下另一步。注意这个最后选项,跳到另一个步骤,不会显示,知道作业里你有第二个步骤。

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

插图3——新建作业步骤高级选项

如果作业因某些原因失败,你可以选择作业步骤的【重试次数】。你也可以指定每个尝试成功完成作业步骤间的延迟(分钟为单位)。下面是失败的操作(例如作业不能完成或在错误代码里结束)。这个选项和成功的操作一样,有不同的默认值(如你所预料)。

因为这是个T-SQL的作业步骤类型,你可以有来自T-SQL命令记录的命令输出(就和sql命令里 -o参数)。你也可以将结果写入表(MSDB里的sysjobsteps表)。

点击【确定】,点击【新建】增加第2个作业到作业。假设步骤1没有生成错误,这个下一步作业步骤备份master数据库。这里我系统里的命令:

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

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

插图4——备份master数据库的第2个步骤

因为这个事作业的结束,点击【高级】,选择【成功要执行的操作】为:退出报告成功的作业。好了——你可以点击【确定】了,完成后的作业步骤如插图5所示。

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

 插图5——完成的作业。

选择点击【确定】完成作业定义,并运行作业。当你点击运行作业时,注意因为有多个步骤,你会被问从哪个步骤开始你的祖业。从第一个步骤来运行作业(如插图6所示),围观下作业流,第1步成功执行后然后移到的第2步——最后一步作业。

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

插图6——作业开始步骤选择(选择第1步)

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

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

插图7——作业成功执行

作业子系统

你会用到7个主要作业子系统。这个数字不包含复制子系统,因为它们情况特殊,典型的这些作业步骤和作业由复制组件创建而不是DBA。对于下片文章,我们会延迟3个分析服务子系统的讨论,因为它们有几个独特的考虑。

T-SQL脚本

T-SQL子系统非常直接,是你最常创建的作业步骤。它允许你对于本地SQL Server实例运行T-SQL,当然SQL Server代理也是本地和它关联的。注意不像分析服务子系统,你只能连接到本地SQL Server实例。对于T-SQL,没有代理能力,因此对于T-SQL的作业步骤只在作业拥有者的安全上下文里运行。

ActiveX脚本

ActiveX子系统允许你运行VBScript,Jscript,或其他自定义的脚本(理论上)。脚本默认在SQL Server代理服务账号的安全上下文里运行。如果你擅长VBSccript,这是个方便的子系统,但这个子系统已经从SQL Server 2008剥离,你应该使用PowerShell来替代。

操作系统(cmd命令执行)

CmdExec子系统允许你运行操作系统命令(如同你打开命令提示行)。命令会在SQL Server代理服务账号的安全上下文里运行。这里要记住的关键是没有用户可以点击或接受任何提示符,因此请确保你的脚本运行没有用户干预。

PowerShell

PowerShell子系统允许你Windows PowerShell 1.0或2.0兼容的脚本。如其他脚本子系统,甲苯默认在SQL Server代理服务账号的安全上下文里运行。PowerShell非常强大,你应该认真学习并掌握它。PowerShell允许连接到远程系统,因此这是绕开T-SQL子系统的限制,可以连接到远程SQL Server实例。

下篇预告

如你所见,SQL Server代理作业步骤是作业内容的核心问题。有很多不同的子系统,每个提供你不同的能力。在这个系列的下一步,我会在作业步骤上检查加强安全的代理能力,还有SQL代理子系统剩下部分——分析服务。

原文链接:http://www.sqlservercentral.com/articles/SQL+Agent/Job+Steps+and+Subsystems/72268/

免责声明:文章转载自《SQL Server代理(2/12):作业步骤和子系统》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Manjaro终端美化centos6.5重置root密码下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

VSS的配置和使用

〇、摘要 在企业开发环境中,源代码管理占据着重要的一环。本文将通过一个实例,创建一个源代码管理的项目SourceManager,来讲述如何使用Visual Studio.Net开发环境,配合Visual Source Safe 6c和IIS,创建企业团队开发环境。 一、 开发前的准备 1、 在装有Windows 2000或者Windows XP Pro...

Subsonic 介绍

原文:Introduction to SubSonic 介绍了SubSonic,一个数据层构建器导言一 个易维护的应用程序,不同的类之间有不同的分工,通常分为界面层、业务层和数据访问层。虽然这一技术有利于更好地组织应用,一些开发人员不愿这么做。创建 一个可靠的和快速的数据访问层需要一些规划,一旦你创建了一个,他们看起来都是相似的。SubSonic帮助你基于...

SqlServer2005到Oracle

由于项目需要,最近一直在研究SqlServer2005数据库如何迁移到Oracle(10g)中,这里小结一下研究过程中碰到的一些问题(主要分客户端和服务器) 1、服务器: 1.1 操作系统:Window Server 2003.(安装好后设置计算机名:Server_Name) 1.2 安装Oracle10g服务器端(10201_database_win3...

ORM框架:Entity Framework

ORM框架:Entity Framework 1.Entity Framework的概念 什么是ORM 对象-关系映射(Object/Relational Mapping,简称ORM),用来把对象模型表示的对象映射到基于SQL的关系模型数据库结构中去。这样在具体的操作实体对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作实体对象的属性和方法。...

SpringBoot-缓存管理

默认缓存管理 Spring框架支持透明地向应用程序添加缓存对缓存进行管理,其管理缓存的核心是将缓存应用于操作数据的方法,从而减少操作数据的执行次数,同时不会对程序本身造成任何干扰。Spring Boot继承了Spring框架的缓存管理功能,通过使用@EnableCaching注解开启基于注解的缓存支持,Spring Boot就可以启动缓存管理的自动化配置。...

部署zabbix企业监控平台

一、实验拓扑图 二、安装zabbix server   实验对象:上图中的zabbix-server 2.1)配置主机名、IP信息 # echo "server.ayitula.com" > /etc/hostname # hostname server.ayitula.com # nmcli con add con-name eth0 ifnam...