本篇文章是SQL Server代理系列的第一篇,详细内容请参考原文。
SQL Server代理是SQL Server的作业调度和告警服务,如果使用得当,它可以大大简化DBA的工作量。
SQL Server代理的核心是运行批量作业的能力。“批量”可以简单的理解成“一系列的动作”,经常是TSQL脚本。它们可以以作业的形式在特定的调度运行,这个调度你可以选择在只有少量用户访问系统的时间点/段。换而言之,可以使用SQL Server代理排定批量作业。批量作业可以是平常的T-SQL任务,也可以是运行于多个数据库实例和多台计算机之间复杂的、多系统的作业。SQL Server代理同样允许通知用户,例如当作业完成,或当作业出错时通过电子邮件通知用户(通知引擎详见第三篇)。
作业一名DBA,很有可能,你能快速的利用SQL Server代理在一台新的数据库服务器部署作业。例如,你会首先创建一个系统数据库的备份作业,通过邮件提醒你备份作业是否成功或失败。随后的工作可能会包括创建和调度业务数据库备份,索引维护(重建或重整),等等。如果你是管理一个相对简单的数据库系统,那么你可以使用SSMS数据库维护计划向导启用维修计划作业调度。
这篇文章是本系列的第一篇,主要是介绍SQL Server代理的特征,讨论如何使用SQL Server代理的优势。它将主要介绍SQL Server代理的组件和功能,展示如何启动服务,演示如何从SSMS创建并运行一个简单的作业。随后章节会深入到各主要组件,包括SQL Server代理如何使用SMO、PowerShell以及Transact-SQL。
这一系列主要聚焦于SQL Server 2005、SQL Server 2008、and 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"->"配置工具"文件夹。你需要是本地Windows管理员(或是其成员)去启动。
一旦启动,配置管理器会自动连接到本地,点击左侧树上的SQL Server服务,在右侧面板你可以看到所安装的SQL Server服务列表。应该有一个叫做"SQL Server代理(实例名)",实例名是你安装数据库时所设定的名称,或者是默认的"MSSQLSEVER"。如果启动模式已经是自动,非常好,在安装过程中已经正确配置好。否则,双击数据SQL Server代理,在弹出的代理属性点击"服务"标签,然后启动模式项展开下拉列表,选择自动,最后点击应用(如图1.1为你应该看到的界面)。当服务重启的时候SQL Server代理会自动启动。如果由于某些原因SQL Server代理没有运行,现在就启动服务。
图1.1 SQL Server代理启动模式配置
服务帐户选择
你需要确保你有一个合适的服务帐户来配置基于你将用SQL Server代理所做的操作。如果你遵循下面操作,在SQL Server代理属性页面,点击"登录"标签,作业基础操作,你可以使用内置帐户,比如Network Service(这个服务帐户可以被设置无论在初始化安装时是否被选择)。图1.2展示了选择效果。在内置账户列表下只需选择Network Service。如果你打算用SQL Server代理连接远程计算机(例如拷贝文件,或管理多个系统),那么你应该切换成域用户帐户(图1.2中这个帐户被下拉列表遮住了),域用户可能是专门为这一目的所创建的。你可能需要从域管理员那请求点什么,从域管理员的角度来看,你需要一个普通用户帐户。无论如何,选择正确的服务帐户,一旦你做出更改,就必需点击重新启动按钮才能让更改生效。一旦你完成了这些,点击确定按钮来完成SQL Server代理服务的配置。你可以从链接查看更多的服务帐户信息。
图1.2 SQL Server代理服务帐户的选择
创建第一个作业
现在SQL Server代理已经运行,你可以创建第一个作业。通过示范,我们要建立一个作业来执行重要的DBA任务,备份系统数据库,不需手动备份那些数据库,你可以创建一个自动化的作业去做。
作业
一个作业是一个逻辑任务的核心,例如备份数据库。一项任务可以包含一个或多个作业步骤,作业可以包含通知(例如作业失败邮件通知DBA)、调度(你想让作业什么时候运行)、甚至可以运行在多个系统上。作为第一个备份作业,我们尽量让它简单。
为了创建这个作业,打开SSMS然后连接数据库实例。展开SQL Server代理结点,然后右击作业。选择创建新作业,如图1.3所示
图1.3 展开创建作业对话框
一个作业有一系列的组件,如1.4所示
图1.4 新建作业对话框
我们给这个作业取名"备份master数据库"。作业类别能够很有用的管理你的作业,但对于第一个作业没必要设定一个类别。你将后在后面的章节学习如何设置类别。在说明窗体,写一点描述性的文字帮助你记忆为什么创建这个作业以及这个作业的用途。记住以后别人要管理这个系统的,因为他们没有创建这些作业,他们不知道作业的用途以及作业是否重要。
做完这一切,你基本上完成了创建作业的“壳”,仅仅只是新作业对话框看到的组件之一,最重要的部分是在其他标签组件。
作业步骤
一个SQL Server代理作业至少包含一个步骤。当大多数人说作业能做一些工作时,实际意味是一个作业步骤。作业步骤是根据需求操作定义的,每个作业步骤将由下列子系统执行:
->ActiveX 脚本
->操作系统(CMDExec)
->PowerShell
->复制系列任务
->SQL Server Analysis Services (SSAS) 命令
->SQL Server Analysis Services (SSAS) 查询
->SQL Server Integration Services (SSIS) 包
->Transact-SQL 脚本 (T-SQL)
对于大多数DBA,大部分的作业会选择最后一种类型,T-SQL。作业可以由作业所有者执行,或者另一个安全上下文,根据作业所有者和配置代理的权限。作业步骤和子系统在下一章节会详细讲述。
如你在SSMS图形界面看到,控制作业步骤的就叫做“步骤”。点击步骤,我们可以创建一个作业步骤, 在对话框的底部点击新建,弹出一个新建作业步骤对话框(图1.5)
图1.5 新建作业步骤
给作业步骤设定一个名称,在我们的例子中,作业名称和步骤名称是相同的——备份master数据库。作业步骤类型为T-SQL,我们将用一个简单的backup命令来备份数据。你可以忽略“运行身份”,默认会以所有者身份运行作业。
对于命令,你可以打开一个文件,或复制粘贴在你写的一些有效的T-SQL查询窗口。为了保持简单,我们做一个简单的备份命令。如果你的数据库不是安装在C盘,你需要修改文件存放路径。
BACKUP DATABASE master
TO DISK='C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\master.bak'
WITH INIT
当完成应该如图1.6所示,点击确定创建作业步骤。
图1.6 作业步骤完成
计划
计划控制作业何时启动,作业计划有四种计划类型
->SQL Server代理启动时自动启动
->CPU空闲时启动
->重复执行
->执行一次
大多数作业计划会使用重复执行(例如每周日下午7点运行我的备份作业)。计划在SQL Server代理中是独立的对象,一个计划可以对应多个作业。
对于我们的作业,我们想每周备份数据库。因此,点击计划标签,选择创建一个新作业计划,如图1.7。给作业计划设定一个名称(作业之间可以共享)。我叫这个计划为"每周系统备份"。幸运的是,对话框默认设置就很好。我们将在每周的周日午夜执行作业。点击确定当你命名好计划,再点击确定以完成整个作业的创建。
图1.7 新建作业计划
执行作业
现在我们已经创建了备份作业,是时候运行作业以检验我们所做的是否正确。尽管我们设定每周运行这个作业 ,我们依然能根据需求手动运行作业。在SSMS,作业文件夹,你可以看到你的作业,右击作业,选择"作业开始步骤",如图1.8所示,这个作业将会执行,然后master数据库将会备份。
图1.8 SSMS中执行作业
下一篇
在接下来的几篇我们将更深入探讨SQL Server代理的各个区域,以及具体的实例的情况下,作业和警报可以大大提高你的SQL服务器系统的能力,使你的生活更轻松。下一篇将重点放在创建和配置的作业步骤,了解各种作业的子系统,作业步骤安全。