ASP.NET ( C# + SQL ) 学习者

不积小流,无以成江海;不积跬步,无以至千里
让我们一起成长
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

[转] 解读SQL Server“数据库维护计划”

Posted on 2006-11-12 19:34  耀眼冰蓝  阅读(3433)  评论(1编辑  收藏  举报
作为网管员,无论其管理的网络的规模是大还是小,在日常的管理中除了维护网络平稳运行、及时排除网络故障、保护网络安全等工作以外,备份网络中关键数据也是其中的一个非常非常重要的工作环节。 网络中的各种故障无非就分两种:软件故障和硬件故障。对于“硬件故障”可以通过维修或更换硬件设备得到及时解决;对于“软件故障”则可以通过重新安装或升级软件、重做网络或应用软件系统等方法及时解决,而且用此方法来解决网络故障大多需要一些基础的、关键的数据支持才能得以恢复正常。但是,网络中诸如此类的关键数据(特别是“应用软件系统”中的关键数据)的损坏或丢失,绝大部分是无法恢复和弥补的。即使可以恢复部分数据,弥补它们所花费的代价(诸如时间、人力、财力、物力等)都可能远远超出了公司的承受能力。

所以说,注重数据的备份工作是网管员日常管理工作中的必须时刻关注的一项任务,也是必须周期性重复操作的一项工作。

目录

现行备份策略
具体实现步骤
结束语


现行备份策略

我公司在组建局域网时,考虑到商业企业的特点,仔细考量了购、销、存三大环节中发生的各种数据及其存储问题后,选定了以Windows 2000 Server为操作系统,SQL Server 2000为数据库平台来搭建局域网的应用系统的软件平台,以网线为载体将购、销、存等核心部门的计算机通过局域网平台紧密地连接起来。这样,各个核心部门每天的任何一笔业务都及时地、动态地存储到公司局域网的核心Dell服务器上的SQL Server 2000数据库中,并以此为基础平台向各方提供所需的各种数据服务。

因此,自公司局域网开始正式运作之日起,作为网管员的我就非常注重对局域网中的关键数据——特别是这些业务数据的备份工作。同时,我也希望备份数据的软件能够实现以下自动功能。

功能1:能够在每天的某个固定的时刻(如夜晚0:00:00,当然这个时间是可以自主设定的)对包含所有业务数据库在内的所有关键数据库进行一次“完全备份”。

功能2:能够在每天的0:00:00至23:59:59这段时间内,每间隔1个小时对功能1中所涉及到的各个数据库的事务日志进行“差异备份”。

功能3:每天都能够保留功能1和功能2中所生成的数据库和事务日志的最近两天的备份(即:前一天的和前两天的),而且能够自动地删除久于两天前的所有数据库和事务日志的备份。

功能4:定期(如每个星期一次)将所有关键数据库的完全备份的副本备份到磁带或其它存储介质上(这部分工作可能需要手工完成)。

于是,围绕这些功能的实现,在日常管理工作中,我尽可能地尝试了各种备份数据的软件和方法,如Windows 2000自带的“备份”工具、SQL Server 2000自带的“备份”功能等。这些备份软件和方法的功能各有千秋,但是都存在以下缺点:

一种就是需要人工干预,无法实现自动备份(如Windows 2000自带的“备份”工具)。如果采用这种方法,就必须时刻人工手动备份,万一哪天因为出差或其它原因没有进行备份,而这时又出现服务器或数据故障的话,那麻烦就大了。

另一种就是能够实现自动备份,但是旧的备份不能被自动地删除(如SQL Server 2000自带的“备份”功能)。如果采取这种方法,就必须及时地手工删除旧的备份,否则再大的硬盘也会迅速地被用完。

在相互比较后,我还是决定采用第二种——SQL Server 2000自带的“备份”功能对关键数据库进行备份,因为它能够实现“自动备份”功能,比第一种略强。所以,在一段时期内,我每天上班后的第一件事就是先检查一下备份目录下各种数据的新的备份,然后手工删除旧的备份数据。这种做法一度让我很是苦恼。

一天,我在利用SQL Server 2000的“帮助”查询某个Transact-SQL语句的语义解释时无意中阅读到“自动化管理任务”的内容。从头到尾地仔细阅读后,我不由得眼睛一亮,原来SQL Server 2000本身自带了一个能够实现我的备份要求的、强大的功能——“数据库维护计划”。于是我立刻按照这部分内容的提示,以一个数据库为试验样本一步一步地操作,成功地创建了一个数据库维护计划。经过一个星期的试运行,这个计划果然能够实现自动备份调度,以及自动删除旧的数据备份,完全能够满足我的备份要求。

从那时起,我就利用SQL Server 2000的“数据库维护计划”备份所有关键数据库,而且严格地、定期地执行功能4,每个星期五将完全备份的数据库备份到磁带和局域网中其它客户机(主要是用于网络管理的网管PC)的硬盘上。这样做的目的是,能同时异地保存三份相同的备份,减少故障带来的损失。

而且,通过SQL Server 2000的“数据库维护计划”,我现在能够较轻松地备份所需各种数据,方便地管理其备份,相应地减少了日常工作量,也减轻了部分工作压力。

具体实现步骤

目录

第一步:打开SQL Server“企业管理器”窗体
第二步:找到“数据库维护计划”功能
第三步:创建“数据库维护计划”
第四步:维护和管理“数据库维护计划”
第五步:启动SQL Server 2000代理以便执行“作业”
第六步:检查结果


“数据库维护计划”功能在SQL Server 2000的“企业管理器”中可以找到。

说明:

1.以下操作是在服务器的Windows 2000 Server上进行操作的。在Window 9X系统上操作相同。

2.由于SQL Server 2000执行备份时将产生许多文件(特别是在进行事务日志备份时),所以建议按数据库名称分别建立独立的备份目录进行存储。

3.以下所有操作过程当中一般不会对数据库的使用产生影响。

第一步:打开SQL Server“企业管理器”窗体

用鼠标单击任务栏上的“开始”按钮中的“程序(P)”菜单下的“Microsoft SQL Server”子菜单中的“企业管理器”菜单项,即可打开SQL Server 2000的“企业管理器”窗体。

第二步:找到“数据库维护计划”功能

在“企业管理器”窗体中左侧的树型选项卡中,用鼠标单击“+”图标扩展开“控制台根目录”下的“Microsoft SQL Servers”,可以看到其下有一个“SQL Server组”;接着继续扩展开“SQL Server组”,此时可以看到其下出现了服务器的名称(图1中的“JXNC-SERVER”就是我的服务器的名称);再继续扩展开此服务器,可以看到其下列出了诸如“数据库”、“数据转换服务”等项目;最后单击“管理”项目,可以看到其下存在一个“数据库维护计划”(如图1)。




图1


单击“数据库维护计划”项目,在“企业管理器”窗口右侧将会显示出已经存在的维护计划项目。每个维护计划均包括以下项目:

1.名称:就是维护计划的名称。此名称可以自定义,中英文皆可。

2.数据库:就是维护计划所进行维护的数据库的名称。

因为一个维护计划允许同时维护多个数据库,所以此处可以显示出多个数据库的名称(在图1中可以看到名为“系统数据库备份”的数据库维护计划中的“数据库”就包括三个数据库:master、model和msdb)。

3.服务器:也就是维护计划所维护的数据库所处的服务器的名称。“(local)”表示是本地服务器。

4.对策:是指维护计划所需要进行的具体维护工作的内容。

图1中有3个“数据库维护计划”均为“数据库备份,事务日志备份”,它的含义就是这些维护计划中同时对所指定的数据库进行“数据库”和“事务日志”的备份。

第三步:创建“数据库维护计划”

鼠标右击“数据库维护计划”项目,选择“新建维护计划(P)”功能,将打开“数据库维护计划向导”窗体,依照此向导能够创建一个新的“数据库维护计划”。

步骤1:单击 “下一步(N)”按钮,打开“选择数据库”窗体(如图2)。在此窗体中可以选定一个或多个的数据库作为操作对象。为了叙述方便,我在此只选择了一个数据库“regie”。

 

图2


步骤2:单击图2中的“下一步(N)”按钮,打开“更新数据优化信息”窗体(如图3)。

 

图3


在此窗体中可以对数据库中的数据和索引重新进行组织,以及能够设定在满足一定条件的情况下,维护计划自动删除数据库中的未使用的空间,以便提高性能。

但要注意的是,在此窗体中,只要选定了“重新组织数据和索引页[R]”复选框,“更新查询优化器所使用的统计。示例[D]”复选框将失效(变成灰色,不能选择)。而且“重新组织数据和索引页[R]”复选框和“从数据库文件中删除未使用的空间[M]”复选框二者只要有一个被选中,其下的“调度[S]”功能才有效。单击“更改[C]”按钮可以对“调度”进行自定义。

各位读者可以根据自身情况决定是否选用其中的功能。当然也可以通过单击“帮助”按钮来查看各功能的具体含义。

在此窗体中能够便捷地设定每项作业的持续运行时间和运行的频率。完成自己的设置后,一定要选定右上角的“启用调度[B]”复选框,这样一个作业调度才算真正完成了。

步骤3:单击图3中的“下一步(N)”按钮,打开“检查数据库完整性”窗体。

在此窗体中可以设定维护计划在备份数据库前自动检查数据库的完整性,以便检测由于硬件或软件错误而导致数据的不一致。在此窗体中只有先选定了“检查数据库完整性[H]”复选框,其下的“备份之前执行这些检查[R]”和“调度[S]”功能才有效。单击“更改[C]”按钮可以对“调度”进行自定义。

各位读者可以自主决定,较好的一种做法就是选中“检查数据库完整性[H]”复选框(推荐,因为有可能会修正一些错误)。

步骤4:在“检查数据库完整性”窗体中的“下一步(N)”按钮,打开“指定数据库备份计划”窗体。

如需对数据库进行备份,则必须选定“作为维护计划的一部分来备份数据库[A]”复选框,而且必须指定存储备份文件的位置:磁带[P]或磁盘[K]。

如果选择“磁盘[K]”作为数据库备份的位置,设定“调度”后单击“下一步(N)”按钮则显示“指定备份磁盘目录”窗体(如图4)。

 

图4


在图4中,可以具体指定存储备份文件的目录(可以使用默认的目录,也可自定义)、备份文件扩展名,而且能够指示备份计划自动地删除早于某个时间(图4中设定的是“2天”,也就是说两天前的所有备份文件将被自动地删除,只留下最近两天的备份)的备份文件。而图4中的“为每个数据库创建子目录[C]”功能只是在步骤1中选择了多个数据库时才有用,对于一个数据库作用不大。设定后,单击“下一步(N)”按钮则显示“指定事务日志备份计划”窗体。

如果选择“磁带[P]”作为数据库备份的位置,设定“调度”后单击“下一步(N)”按钮则直接显示“指定事务日志备份计划”窗体。

步骤5:指定“事务日志备份计划”的过程与步骤4的过程完全相同,只是在设定“调度”上稍有差别(因为我的要求是数据库每天备份一次,事务日志每1小时备份一次)。

步骤6:对事务日志的备份计划全部设定后,单击“下一步(N)”按钮则显示“要生成的报表”窗体。

在此窗体中可以指定用于存放整个备份计划执行过程中的日志的目录。设定过程与图4的操作及其相似。

 

图5


步骤7:完成步骤6后,单击“下一步(N)”按钮则显示“维护计划历史纪录”窗体。

在此窗体中可以指定如何存储此维护计划的历史纪录(是存放在“本地服务器”上,还是在“远程服务器”上),而且通过指定表中的行数可以限定历史纪录的存储大小。

步骤8:完成步骤7后,单击“下一步(N)”按钮则显示“正在完成数据库维护计划向导”窗体(如图5)。

在此窗体中可以自定义一个“计划名[P]”(推荐,这样便于管理和识别),当然也可使用默认的“计划名[P]”。而且还可以通过对“计划名[P]”下的文本框中的内容进行确认,如有误,则可通过单击窗体中的“上一步[B]”按钮退回到相应的窗体进行修改。

步骤9:完成步骤8后,单击“完成”按钮,则显示“维护计划已创建成功。”的提示框,再单击 “确定”按钮即成功地设定了一个新的数据库维护计划。

从图6中可以看到,已经成功的创建了一个新的数据库维护计划——“regie备份”。

第四步:维护和管理“数据库维护计划”

第三步完成后,对各个“数据库维护计划”的日常维护和管理都非常方便,只需要双击“数据库维护计划”即可对第三步中所涉及的内容进行变更、修正。

 

图6


如图6所示,鼠标右击“regie备份”,单击“属性[R]”,或者直接双击“regie备份”,打开“数据库维护计划”窗体。在此窗体中集成了第三步中涉及到的所有功能,每项功能都能任意修改,修改过程与第三步中的相应步骤一样。

但需要说明的是,在设定图7中的“报表”选项卡下的“文本报表”中的“删除早于此时间的文本报表文件[F]”选项时,也就是第三步中的步骤6中的内容,无论您将其设定成“分钟”、“小时”、“天”,还是“月”,创建成功后都将被自动地更正为“周”,而且以后无论如何修改,保存后再去查看时它仍将显示为“周”,但不意味着其它选项无效,其它选项仍然有效。

 

图7


第五步:启动SQL Server 2000代理以便执行“作业”

完成第三步后,还需启动SQL Server 2000 Agent(代理),以便执行“数据库维护计划”作业。

与展开SQL Server 2000“数据库维护计划”的步骤一样,在“管理”项目中,可以发现存在一个“SQL Server 代理”(如图8)。

 

图8


单击“SQL Server 代理”下的“作业”子菜单,在“企业管理器”窗口右侧将会显示出已经存在的作业项目(在图8中可以看到已经存在17个作业项目)。每个作业项目均包括以下数据列:

1.名称:当然是指作业的名称,可以自定义,中英文皆可。为了理解方便,建议用中英文结合。

每当新建立一个“数据库维护计划”,将自动生成以下默认名称的作业:

(1)当新建的“数据库维护计划”中设定了“备份数据库”功能时,将生成默认名为“DB 维护计划‘******’的 DB 备份作业”的作业。

(2)当新建的“数据库维护计划”中设定了“备份事务日志”功能时将生成默认名为“DB 维护计划‘******’的 事务日志备份作业(多服务器)”的作业。

以上(1)和(2)中的“******”处将显示“数据库维护计划”中的“计划名”(也就是第三步步骤8中设定的“计划名”)。

2.分类:指明该作业当前所属的类别。缺省值为“[未分类(本地)]”。

3.启用:指明该作业是否处于“启用”状态。

4.可运行:指明该作业是否处于“可运行”状态。

5.已调度:指明该作业是否处于“已调度”状态。

6.状态:指明该作业当前的运行状态—不在运行、正在运行。

7.上次运行状态(开始日期):显示最近一次运行该作业后的状态(“已成功”、“失败”,还是“未知”),和运行时的日期和时间。

8.下次运行日期:指明下一次运行该作业的日期和时间。

如图8所示,鼠标右击“regie完全备份”作业,单击“属性[R]”,或者直接双击“regie完全备份”作业,打开作业的“属性”窗体。在此窗体中集成了该作业的详细的配置项。每个配置项都能任意修改。“属性”窗体中有四个选项卡:

◆ 常规:在此选项卡中可以重新设定作业名称(“名称[N]”文本框)、修改作业的分类(“分类[Y]”下拉框)、指定作业的所有者(“所有者[W]”下拉框)、简单地对作业进行描述(“描述[R]”文本框),以及决定是否启用此作业(“启用[E]”复选框)。

◆ 步骤:在此选项卡中可以新建、插入新的步骤,删除、编辑已有的步骤。

单击“编辑[E]”按钮,在“编辑作业步骤”窗体中的“常规”选项卡中的“命令[M]”文本框中可以查阅到该作业的执行语句。

◆ 调度:在此选项卡中可以新建调度、新建警报,删除、编辑已有的调度。

◆ 通知:在此选项卡中可以设定作业完成时(即当作业成功时、作业失败时)执行的操作,即发送电子邮件、传呼操作员、发出网络警报信息、写入Windows应用程序事件日志、自动删除等操作。

第六步:检查结果

经过上述五个步骤后,一个完整的备份数据库的计划就建立起来了。可以通过“资源管理器”来检查备份目录下是否存在相应地备份文件。

经过长时间的使用,如果以“保留2天的数据库完全备份和2天的每个一小时的事务日志备份”的备份策略来正确地建立了一个完整的数据库维护计划的话,无论何时查看相应备份目录下的文件,都应该存在102个文件:

◆2个数据库的完整备份,即2个以“数据库名_db_yyyy mmddhhss.bak”格式为文件名的文件;

◆ 3个与数据库完整备份相对应的操作过程的记录报告文件,即以“数据库名”+“备份4_yyyymmddhhss.txt” 格式为文件名的文件;

◆ 48个事务日志的差异备份,即2天各24个以“数据库名_tlog_yyyymmddhhss.trn”格式为文件名的文件;

◆ 49个与事务日志的差异备份对应的操作过程的记录报告文件,即以“数据库名”+“备份6_yyyymmddhhss.txt” 格式为文件名的文件。

以上文件名中,“数据库名”为第三步的步骤一中选定的数据库的名称;“yyyymmddhhss”是时间戳,其格式为:“yyyy”指“年”(4位数值),“mm”指“月”(2位数值,不足2位的补“0”),“dd”指“日”(2位数值,不足2位的补“0”),“hh”指“时”(2位数值,不足2位的补“0”),“ss”指“分”(2位数值,不足2位的补“0”)。

结束语

对于一个企业而言,日常运作中发生的各种业务所产生的所有数据,经过计算机不断地日积月累,逐渐成为公司的一种财富和资本。利用计算机,可以便捷地统计分析部分或全部的数据,通过各种形式的反馈(如图表、表格等),给公司的决策层用于参考,便于为公司的今后决策提供指导和帮助。正基于此,这些数据的价值随着时间的延续正呈现出几何速度的增长。因此我认为,对于数据的备份工作是网管员日常工作中最重要的工作之一。

通过这次“数据库维护计划”的创建,我略有感受:

1.经过这么长时间的运用,我认为“数据库维护计划”仍然存在不足之处,虽说“数据库维护计划”功能很强大,但是它最终的结果是生成一项作业,由“SQL Server 2000 Agent”服务定期执行它来完成对数据库的备份工作。这就要求“SQL Server 2000 Agent”服务能够正常地“运行”。从多次安装来看,在Windows 2000系统中“SQL Server 2000 Agent”服务能够正常运行,而且能随Windows 2000的启动自动运行。但是在Window 98系统(包括第二版)中,却不能正常运行。所以说,在Windows 98系统中即使依照上述步骤成功地创建了“数据库维护计划”,也会因为“SQL Server 2000 Agent”服务无法启动而变得没有任何作用。

2.之所以选择“完全备份”,主要在于,在进行完全备份时,SQL Server将.mdf与其对应的.ldf文件进行对比,删除一些旧的、不必要的日志,然后将.mdf和.ldf文件进行合并、压缩后一起存储。

◆ 优点是:能最大可能地、完整地保存数据库。

◆ 缺点是:存储量随着数据库的增大而增大,存储时间也将随着数据库的增大而延长。

3.在建立“数据库维护计划”过程,各位读者应该尽可能地去使用各种选项、功能,以便加深对“数据库维护计划”的理解和掌握。

4.虽然Internet上有许多第三方备份软件和工具,但是大多数是共享版。由于担心知识产权问题、病毒问题和其它问题,所以我没有试用这些第三方软件。这样的话,它们的性能我就不清楚了。也许这些软件的功能非常强大,能够满足更多的、更高的要求。在这里我只是就Windows 2000和SQL Server 2000自带的“备份”工具和软件进行一个比较。


_______________________________________________________________________
如果你想阐述自己的观点,请在下面发言

28 Apr 07