SQL Server代理是所有实时数据库的核心。代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的。这系列文章会通俗介绍它的很多用法。
SQL Server代理是SQL Server作业调度和报警服务,使用得当的话,会大大简化数据库管理员(DBA)的工作。
SQL Server代理的核心是运行批处理作业(batch jobs),“批”是简单的“一系列操作”,通常用T-SQL脚本定义。这些可以作为作业(job)运行,在特定计划(schedule)上,你会选择安排在少数用户访问数据库的时候;换句话说,它们以批处理作业使用SQL Server代理进行计划。这些批处理作业可以是任何东西,从零碎的T-SQL任务,到复杂的,在多个SQL Server实例和多个计算机间运行的多个系统作业。SQL Server也允许你通知用户,例如通过邮件,当特定批处理作业完成时,或当错误发生时(通知引擎会在第3篇文章谈到)。
很可能,作为DBA的你,希望能立即在新部署的SQL Server上使用SQL Server代理来计划作业。例如,你的第一个任务会是备份系统数据,使用电子邮件警报来告诉你备份作业成功还是失败。接下来的任务会包括你的用户数据库的配置和计划备份,索引维护操作(重建或重组)等等。如果你管理相当简单的SQL Server系统,那么你会启用维护计划来计划作业安排,例如,使用SSMS数据库维护计划向导。
这篇文章是探索SQL Server代理功能的第1篇,讨论下如何充分利用SQL Server代理。它包括介绍主要的组件和SQL Server代理的功能,展示如何让这个服务运行起来,并演示下如何从SSMS创建和执行简单的批处理作业。接下来的文章会深入每个组件,包括如何使用SQL Server代理结合使用SMO,PowerShell和T-SQL。
这系列文章会集中于SQL Server 2005, SQL Server 2008和SQL Server 2008 R2;但是,在这个系列里的大部分信息同样适用于SQL Server 2000。
让SQL Server代理运行起来
在SQL Server初始配置期间,SQL Server代理默认是不启用,因此使用SQL Server代理的第一个步骤,是让SQL Server代理运行起来。
设置代理和SQL Server自动启动
为了设置SQL Server代理自动启动,点击【开始】【Microsoft SQL Server 2008 R2】【配置工具】,打开【SQL Server 配置管理器】。你需要是本地Windows管理员账户来运行这个工具。
一旦启动后,这个工具会自动连接你的本地电脑。在树型里点击【SQL Server 服务】,在右侧的面板里,你会看到安装的SQL Server服务列表。其中应该是“SQL Server 代理(实例名称)”,实例名称要么是你安装的SQL Server实例名称,或者是“MSSQLSERVER”,如果你配置了默认实例。如果【自动模式】已经设置为【自动】,太好了,在安装期间这已经正确配置。如果没有,双击【SQL Server代理】,在出现的属性对话框里点击【服务】标签,点击【启动模式】,下拉里选择【自动】,然后点击【应用】(如插图1.1所示)。现在当服务器重启的时候,SQL Server代理会自动启动,SQL Server也是运行的。如果SQL Server代理没有运行,现在就启动这个服务。
插图 1.1——为SQL Server代理配置SQL Server配置管理器
服务账号选择
基于你要在SQL Server代理上计划要做的,你需要保证你已经配置了合适的服务账号。如果你按部就班来的话,你应该在SQL Server代理属性的【服务】标签页。点回【登录】标签页。对于SQL Server代理的基本操作,你可以使用内置账号,例如Network Service(在SQL Server安装期间,这个服务账号会被默认选择,不管选了什么服务)。插图2就是选择对话框。直接从内置账户里选择【Network Service】。如果你想让SQL Server代理连接到远程电脑(复制文件,例如管理多个系统)那么你会切换使用域用户账号(在插图1.2里,本账户已被下拉框覆盖);很有可能有一个特定的账号来指定。这是你要文你的域管理员。你会需要从域管理员角度来索取一个原始账号。不管怎样,选择正确的服务账号后,一旦你做出任何修改,你会需要选择【重新启动】来让新的改动生效。一旦你完成这个,点击【确定】来完成SQL Server代理服务的配置。你可以在微软在线帮助了解更多服务账号选择的信息:服务器配置 - 服务帐户。
插图1.2:为SQL Server代理选择服务账号
创建你的第一个作业
选择SQL Server代理已经运行,你可以创建你的第一个作业。通过示范,我们会配置一个作业来进行一些DBA的职责,备份你的系统数据库,不必手动记得备份这些数据库,你可以创建会为你完成的自动化作业。
作业
作业是单个逻辑任务的核心容器,例如备份数据库。这个任务会包含一个或多个作业步骤。这个作业会包括提醒(例如,如果作业失败提醒DBA),计划(什么时候你想运行这个作业),甚至在多个系统里运行。对于我们的第一个备份作业,不管怎样,我们会保持它简单。
为了创建作业,打开SSMS连接到你的SQL Server实例。展开SQL Server代理节点,右击作业,选择【新建作业】,如插图1.3所示。
插图1.3——运行【新建作业】对话框
一个作业有多个组件,如你在插图1.4所示。
插图1.4——【新建作业】对话框
我们命名作业名为“备份Mater数据库”。这个名称会在SSMS图形用户界面里的作业或PowerShell里引用。作业【类别】会是组织你作业的有效方式,但对于你的第一个作业设置类别并不重要。你会在接下来的文章学习指定【类别】。在【说明】文本框里,写些可以帮助你记住为什么你创建这个作业和它应该做什么。记住其他人以后也会管理这个系统。因为他们没有创建这个作业,他们不会知道这个应该实现啥,这个作业是否重要。
做完这些,你已经基本完成创建作业的“外壳”,对于你在新建作业对话框里看到的所有组件,它只是“外壳的容器”。作业的最重要部分是其他标签里的组件。
作业步骤
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脚本
对于大多数SQL Server的DBA来说,你的主要工作是使用作业步骤的最后一类,T-SQL。作业可以作为作业所有者运行,也可以使用另一个安全上下文,取决于作业所有者的权限和代理配置。作业步骤和子系统会在下篇文章详细介绍。
如你在SSMS图形用户界面里所见,控制作业步骤的标签页为“步骤”。现在点击它,我们来创建一个作业步骤,点击对话框底部的【新建】按钮,【新建作业步骤】对话框会被打开(如插图1.5)。
插图1.5——新建作业步骤
给作业步骤去个有用的名称——在我们的情况里,作业名称和步骤名称可以是一致的——“备份Master数据库”。作业步骤会是T-SQL,因为我们使用简单的BACKUP命令做数据库备份。现在你可以忽略【运行身份】,默认情况我们作为作业拥有者来运行作业步骤。对于我们的操作,数据库默认设置正确,是在master里运行的。
对于【命令】本身,你可以打开一个文件,或者复制粘贴一些合法在查询窗口的T-SQL。简单起见,我们进行一个简单的备份命令。如果你不是在C安装的SQL Server,你需要修改文件位置到指定位置。我这里默认安装在C盘,在生产数据库里系统数据库和用户数据库不会放在同个硬盘。
1 BACKUP DATABASE master 2 TO DISK='C:Program FilesMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLBackupmaster.bak' 3 WITH INIT
完成后的样子如插图1.6所示,点击【确定】创建作业步骤。
插图1.6——完成的作业步骤
作业计划
作业计划控制着什么时候作业会自动启动。作业计划有四个类型:
- SQL Server代理启动的自动启动
- CPU空闲时启动
- 循环执行
- 执行一次
大部分的作业调度会循环执行(例如,在每周日下午7点运行一次我的备份)。计划在SQL Server代理里是独立的对象,一个计划可以关联到多个作业步骤。
对于我们的作业,我们希望数据库每周备份。因此,点击计划标签页,点击【新建】来创建作业计划,如插图1.7所示。命名计划有意义的名称(因为它们会在作业间共享)。我命名它为“每周系统备份”。幸运的是,这个页面的默认设置就可以了!我们一个星期运行一次,在周日,0点运行。点击【确定】,再次点击【确定】完成作业的创建。
插图1.7——新建作业计划
运行刚创建的作业
现在偶们已经创建好我们的作业,我们运行来验证下是否正确。即使我们计划这个作业每周运行,我们还是按需要人为运行它。在SSMS里,在【作业】文件夹下,现在你会看到你的作业。右击作业,选择【作业开始步骤】,如插图1.8所示。作业会运行,现在你的master数据库已经备份。
插图1.8——在SSMS里启动作业
下篇预告
在接下来的文章里我们逐步深入探索SQL Server代理的每个领域,伴随特定场景的例子,作业和警告可大大增强你的SQL Server数据库的功能,让你的生活更加轻松。下篇文章会聚焦创建和配置作业步骤,理解不同的作业子系统和作业步骤安全。
感谢关注!
原文链接:http://www.sqlservercentral.com/articles/Stairway+Series/72267/