到SQL Server代理的步骤:第1级:设置和概述
Richard-Waymire, 2013-01-02(首次出版:2011-02-17)
级别1:SQL Server代理设置和概述
SQL Server Agent是SQL Server的作业调度和警报服务,如果使用得当,它可以极大地简化数据库管理员(DBA)的工作负载。
SQL Server Agent的核心是运行批处理作业的工具。“batch”只是一组“操作”,通常使用Transact-SQL脚本定义。然后,它们可以作为作业运行,在特定的时间表上,当很少有用户访问系统时,您可以选择这样做;换句话说,它们被调度为批处理作业,使用SQL Server代理。这些批处理作业可以是简单的T-SQL任务,也可以是复杂的、跨多个SQL服务器实例和多台计算机运行的多系统作业。SQL Server Agent还允许您通过电子邮件通知用户,例如,当特定的批处理作业完成时,或者当错误发生时(通知引擎在第3级中介绍)。
作为一名DBA,您很有可能立即能够使用SQL Server代理在新的SQL Server部署上调度作业。例如,您的第一项工作可能是备份系统数据库,并发出邮件警告,告诉您备份作业是否完成或失败。后续工作可能包括设置和调度用户数据库的备份、索引维护操作(重新构建或重新组织),等等。如果您正在管理一个相当简单的SQL Server系统,那么您将启用维护计划作业调度,例如,使用SSMS数据库维护计划向导。
本文是探索SQL Server Agent特性的第一个阶梯,并讨论了如何充分利用SQL Server Agent。它将介绍SQL Server Agent的大部分组件和功能,向get服务运行展示,并演示如何从SSMS创建和运行一个简单的批处理作业。然后,后续级别将更深入地研究每个主要组件,包括如何使用SMO、PowerShell和Transact-SQL使用SQL Server Agent。
本系列将重点介绍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 Agent设置为自动启动,打开SQL Server Configuration Manager实用程序,可以在“Microsoft SQL Server 2008”|“Configuration Tools”文件夹中找到。要运行这个实用程序,您需要是本地windows管理员(或者是最好的朋友)。
一旦启动,该实用程序应自动连接到您的本地计算机。单击树中的“SQL Server Services”选项。在右边的面板中,您应该看到已安装的SQL Server服务的列表。其中之一应该是“SQL Server Agent (instancename)”,其中instancename要么是安装SQL Server时使用的实例名,要么是配置默认实例时使用的“MSSQLSERVER”。如果启动模式已经设置为automatic,很好,它在安装过程中得到了正确的配置。如果没有,双击SQL Server Agent,单击出现的properties对话框中的“Service”选项卡,然后单击next下拉框进入Start模式。选择Automatic,然后单击Apply(如图1.1所示)。现在,当服务器重新启动并运行SQL Server时,SQL Server代理将自动启动。如果由于某种原因SQL Server代理没有运行,那么现在就启动服务。
图1.1 - SQL Server Agent的SQL Server配置管理器
服务帐户选择
您需要确保根据使用SQL Server Agent的计划配置了适当的服务帐户。如果您一直在跟踪,那么您将位于SQL Server代理属性的Service选项卡上。单击“登录”选项卡。对于SQL Server Agent的基本操作,可以使用内置帐户,比如Network Service(服务帐户将设置为SQL Server初始安装期间选择的任何值)。图2显示了选择对话框。只需从“内置帐户”下的列表中选择“网络服务”。如果您打算让SQL Server代理连接到远程机器(例如,复制文件,或管理多个系统),那么您将希望切换到使用域用户帐户(图1.2中的下拉菜单中包含的“This account”选项);可能是专门为这个目的创建的。这是您需要从域管理员请求的内容。从域管理员的角度来看,您将需要一个普通用户帐户。在这两种情况下,选择正确的服务帐户,一旦进行了任何更改,就需要选择Restart按钮才能使新更改生效。完成之后,单击OK按钮完成对SQL Server代理服务的配置。您可以通过http://msdn.microsoft.com/en-us/library/cc281953.aspx了解更多关于服务帐户选择的信息。
图1.2 - SQL Server代理的服务帐户选择
创造你的第一份工作
现在SQL Server代理正在运行,您可以创建您的第一个作业。通过演示,我们将设置一个工作执行关键DBA任务之一,这是备份系统数据库,而不必记得手动备份这些数据库,您可以创建一个自动化的工作来帮你吧。
工作
作业是单个逻辑任务的核心容器,例如备份数据库。该任务将包含一个或多个作业步骤。作业可能包括通知(例如,如果作业失败,向DBA发送电子邮件)、调度(当您希望作业运行时),甚至可能在多个系统上运行。然而,对于我们的第一个备份任务,我们将保持简单。
要创建作业,请打开SSMS并连接到您的SQL Server实例。展开SQL Server代理节点,然后右键单击作业。选择创建新作业的选项(“new job…”),如图1.3所示。
图1.3 -启动New Job对话框
作业有许多组件,如图1.4所示。
图1.4 - New Job对话框
我们将该任务命名为“备份主数据库”。这将是用于在SSMS GUI或PowerShell中引用作业的名称。工作类别可能是组织工作的一种有用的方法,但是对于您的第一份工作来说,设置类别并不重要。您将在稍后的级别中学习如何指定类别。在“描述”框中,写下一些能帮助你记住为什么要创建这份工作以及它应该做什么的内容。记住,以后可能会有其他人来管理这个系统,因为他们没有创建这个工作,所以他们不知道它应该完成什么,以及它是否重要。
完成所有这些之后,基本上就完成了创建作业“shell”的工作,它只是“shell容器”,用于在New job对话框中作为选项卡看到的所有组件。工作中最重要的部分是位于其他选项卡上的组件。
工作的步骤
SQL Server Agent中的作业至少由一个作业步骤组成。当大多数人认为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)
对于大多数SQL Server dba,您的大多数作业将使用最后一种作业步骤T-SQL。作业可以作为作业所有者运行,也可以使用其他安全上下文运行,这取决于作业所有者的权限和代理的配置。下一层将更详细地介绍作业步骤和子系统。
正如您在SSMS GUI中所看到的,控制作业步骤的选项卡被简单地称为“步骤”。现在单击它,我们将创建一个job步骤。单击对话框底部的“New”按钮,将启动“New Job Step”对话框(参见图1.5)。
图1.5 -新作业步骤
给作业步骤起一个有用的名字——在我们的例子中,作业名称和步骤名称可能是相同的——“备份主数据库”。作业步骤类型为T-SQL,因为我们将使用一个简单的BACKUP命令进行数据库备份。您可以暂时忽略“Run as”,因为默认情况下,我们将作为作业的所有者(即您)运行作业步骤。默认情况下,数据库被正确地设置为我们正在做的事情,即在master中工作。
对于命令本身,您可以打开一个文件,或者复制并粘贴您在查询窗口中编写的一些有效的T-SQL。为了保持简单,我们正在执行一个简单的备份命令。如果没有在C驱动器上安装SQL Server,则需要将文件位置更改为在计算机上可以工作的文件位置。我展示的示例来自一个简单的SQL Server虚拟机安装,全部安装在一个硬盘驱动器上。您不应该在单个硬盘驱动器上看到这样的生产SQL服务器!
BACKUP DATABASE master
TO DISK='C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\master.bak'
WITH INIT
当完成时,它应该如图1.6所示。单击OK创建作业步骤。
图1.6 -完成的作业步骤
工作日程安排
作业调度控制作业实际启动的时间。有四种类型的工作时间表:
当SQL Server代理启动时自动启动
每当cpu空闲时启动
反复出现的
一次
大多数作业计划都是循环类型的(例如,在周日下午7点运行我的备份)。调度是SQL Server代理中的独立对象,一个调度可以连接到多个作业。
对于我们的工作,我们希望数据库每周备份一次。因此,单击schedule选项卡,并选择New来创建一个新的作业调度,如图1.7所示。将工作计划命名为一些实际的东西(因为它们可以在不同的工作之间共享)。我将此计划称为“每周系统备份”。幸运的是,这个页面上的默认设置将非常有效!我们将让它每周运行一次,在星期天午夜。当您指定了时间表后,单击OK,然后再次单击OK以完成作业创建。
图1.7 -新工作时间表
运行您刚刚创建的作业
既然已经创建了备份作业,那么最好运行该作业来验证我们所做的一切都是正确的。即使我们将此作业安排为每周运行一次,我们仍然可以根据需要手动运行作业。在SSMS中,在Jobs文件夹下,您现在应该看到您的作业。右键单击作业,并选择“Start Job at Step…”,如图1.8所示。作业将运行,现在备份了主数据库。
图1.8 -在SSMS中启动作业
接下来是什么?
在接下来的几个级别中,我们将更深入地研究SQL Server代理的各个领域,并提供一些具体的例子,说明作业和警报可以极大地增强SQL Server系统的功能,使您的工作更轻松。下一个级别将集中于创建和配置作业步骤、理解各种作业子系统和作业步骤安全性。
本文是到SQL Server代理的父楼梯的一部分