第1页:第12章数据库的日常维护与管理
第12章数据库的日常维护与管理
第2页:教学目标
教学目标
- 了解数据库日常维护与管理的主要工作。
- 掌握数据的备份与恢复的相关概念及基本操作方法。
- 掌握SQL Server 2005代理服务的基本内容和操作技巧。
- 掌握维护计划的基本用途和使用技巧。
第3页:主要内容
主要内容
第4页:数据的备份与还原
数据的备份与还原
- 数据的安全性是至关重要的,数据一旦遭受破坏或丢失可能造成不可挽回的损失。
- SQL Server2005提供了对数据库进行备份功能,使用户可以在出现故障后将正确数据还原。
第5页:数据的恢复模式
数据的恢复模式
- 备份和还原操作
- 在“恢复模式”下进行的。恢复模式是数据库的属性之一,它用于控制数据库备份和还原操作的基本行为。
- 数据库恢复模式有三种
- 简单恢复模式、完整恢复模式和大容量日志恢复模式。
第6页:说明:恢复模式的设置
说明:恢复模式的设置
- 当数据库的恢复模式设置为“大容量日志”时,则以下行为将不产生管理事务记录:
- 执行SELECT INFO语句。
- 执行BULK COPY语句或bcp工具程序。
- 建立索引、ALTER INDEX REBUILD或DBCCDBREINDEX等操作。
- 对text、ntext及image大型数据类型的运行,如WRITETEXT或UPDATETEXT。或是针对varchar(max)、nvarchar(max)及varbinary(max)数据类型使用UPDATE陈述式的WRITE子句。
- 由于上述操作都将耗费大量事务日志空间,若这些操作不产生日志记录,就可大大提高执行效率。
第7页:数据库的恢复模式可以
数据库的恢复模式可以
- 数据库的恢复模式可以随时进行切换,如果在大容量操作过程中发生切换,则大量的操作记录会适当地变更,执行很多大容量操作的前后在“完整”恢复模式和“大容量日志”恢复模式之间进行切换会很有益处。
- 完整恢复模式会完整记录所有的事务,主要用于一般状况,大容量日志恢复模式主要是暂时用于大型的大容量操作期间。
第8页:注意:可以将“完整”或“大容量
注意:可以将“完整”或“大容量
- 可以将“完整”或“大容量日志”恢复模式切换到“简单”恢复模式,但在切换之前应该先备份事务日志文件,以便允许恢复到该时间点。
- 简单恢复模式不支持备份事务记录文件,所以在切换之后,会中断任何备份事务日志的排定操作,因此,须重新查看备份策略是否受到影响。
第9页:数据库恢复模式的设置
数据库恢复模式的设置
- 在“对象资源管理器”窗口中展开【数据库】,右击相应的数据库名,在弹出的快捷菜单中选择命令【属性】,打开【数据库属性】对话框。
- 在【数据库属性】对话框左上方的【选择页】中选择【选项】,在如图12-1所示的对话框中单击【恢复模式】旁边的下拉列表框中选择所需要的恢复模式。
第10页:数据库的备份
数据库的备份
- 数据库备份可以创建备份完成时数据库内存在的数据的副本,这个副本能在遇到故障时恢复数据库。
- 另外,数据库备份对于例行的工作(如将数据库从一台服务器复制到另一台服务器、设置数据库镜像、重要文件归档和灾难恢复)也很有用,备份是数据库日常管理的一项重要工作。
- SQL Server 2005只允许系统管理员、数据库所有者和数据库备份执行者对数据库进行备份操作。
第11页:说明:数据库备份记录了在进行备
说明:数据库备份记录了在进行备
- 数据库备份记录了在进行备份这一操作时数据库中所有数据的状态,以便在数据库遭到破坏时能够及时地将其恢复。
- 备份数据库操作是动态进行的,即在备份数据库时,仍允许其他用户继续对数据库进行操作。但是,在备份过程中不允许执行以下操作:
- 创建或删除数据库文件。
- 创建索引。
- 执行非日志操作。
- 自动或手工缩小数据库或数据库文件大小
第12页:备份方式
备份方式
- 完整备份和完整差异备份
- 部分备份和部份差异备份
- 事务日志备份
第13页:备份策略
备份策略
- 创建备份的目的是为了可以恢复已损坏的数据库。备份和还原数据需要占用一定量的资源,因此,可靠使用备份和还原以实现恢复需要有制订备份和还原策略。
- 设计良好的备份和还原策略可以尽量提高数据的可用性、减少数据丢失并能合理地使用系统资源。
第14页:设计备份策略时首先、设计备份策略时主要基
设计备份策略时首先、设计备份策略时主要基
- 在设计备份策略时首先要了解用户对数据库的要求、数据库的特性和对资源的约束。
- 设计备份策略时主要基于以下几个方面的考虑:
第15页:注意:除了要备份用户自己创建
注意:除了要备份用户自己创建
- 除了要备份用户自己创建的数据库外,系统数据库中的master数据库和msdb数据库也应该备份。否则一旦系统崩溃,即使有用户数据库的备份也无法完全恢复。
第16页:备份设备
备份设备
- 如果备份设备为硬盘或其他磁盘存储媒体上的文件,则引用磁盘备份设备与引用任何其他操作文件一样,可以在服务器本地磁盘上或共享网络资源的远程磁盘上定义磁盘备份设备,磁盘备份设备根据需要可大可小。
- 如果要通过网络备份到远程计算机上的磁盘,须使用通用命名约定(UNC)名称(格式为\\\\\)。
- 磁带备份设备的用法与磁盘设备基本相同。如果磁带备份设备在备份操作过程中已满,系统将提示更换新磁带并继续备份操作。
第17页:注意:备份文件不要与原数据库放
注意:备份文件不要与原数据库放
- 备份文件不要与原数据库放在的同一物理磁盘上,否则一旦这个磁盘设备发生故障,将无法恢复数据库。
- 磁带设备必须物理连接在运行SQL Server2005的计算机上,系统不支持备份到远程磁带设备上。
第18页:创建备份设备的方法
创建备份设备的方法
- 在“对象资源管理器”使用菜单命令
- 执行系统存储过程sp_addumpdevice。
第19页:用菜单命令新建备份设备
用菜单命令新建备份设备
- 在“对象资源管理器”中展开【服务器对象】,右击【备份设备】,选择【新建备份设备】命令,在【备份设备】对话框中输入设备名称和目标文件。
- 这里的设备名称就是设备的逻辑名,目标文件为设备的物理名称。
第20页:例1:使用“对象资源管理器”创建一
例1:使用“对象资源管理器”创建一
- 使用“对象资源管理器”创建一个逻辑名为“mybak”、物理名为“D:\db_back\mybak.bak”的备份设备。
第21页:如果要删除已建立的备
如果要删除已建立的备
- 如果要删除已建立的备份设备,只需在对象资源管理器中展开【服务器对象】/【备份设备】,右击要删除的备份设备名,在弹出的快捷菜单中选择【删除】即可。
第22页:T-SQL命令创建备份设备语法格
T-SQL命令创建备份设备语法格
式:exec sp_addumpdevice [@devtype ]’device_type’
第23页:例2:使用T-SQL语句创建一个逻
例2:使用T-SQL语句创建一个逻
- 使用T-SQL语句创建一个逻辑名为“mybak”,其实际文件名为mybak.bak,该文件的存放路径为D盘db_back的备份设备。
- exec sp_addumpdevice ‘disk’,’mybak’,’D:\db_back\mybak.bak’
第24页:例3:使用T-SQL语句删除前面创
例3:使用T-SQL语句删除前面创
- 使用T-SQL语句删除前面创建的备份设备“D:\db_back\mybak.bak”。exec sp_dropdevice ’mybak’,’D:\db_back\mybak.bak’
第25页:备份操作
备份操作
第26页:菜单命令
菜单命令
- 例4,使用“对象资源管理器”将数据库teachingData完整备份到备份设备mybak中。
第27页:完成后在“对象资源管
完成后在“对象资源管
- 完成后在“对象资源管理器”窗口中展开【服务器对象】/【备份设备】,右击【mybak】,选择【属性】命令,打开了“备份设备”对话框,在该对话框的【选择页】中选择【媒体内容】,即可看到备份在该设备中的备份文件。
第28页:T-SQL命令方式
T-SQL命令方式
- 例5,按上例中的要求用T-SQL命令语句将数据库teachingData完整备份到备份设备mybak中,并使用WITH FORMAT子句初始化备份设备。
- 执行命令语句:BACKUP DATABASE teachingDataTO DISK= ‘D:\db_back\mybak.bak’WITH FORMATGO
- 这里使用了WITH FORMAT子句对备份设备mybak.bak进行了初始化。
第29页:例6:用T-SQL命令语句将数据库
例6:用T-SQL命令语句将数据库
- 用T-SQL命令语句将数据库teachingData完整差异备份到备份设备mybak中。BACKUP DATABASE teachingDataTO teachingDATAWITH DIFFERENTIALGO
第30页:例7:备份文件组
例7:备份文件组
例7 用T-SQL命令语句将Northwind数据库中的名为“NthWd文件组”的文件组备份到名为“mybak”的备份设备上。BACKUP DATABASE NothwindFILEGROUP = ‘NthWd文件组’TO mybak
第31页:例8:备份事务日志
例8:备份事务日志
例8 在已经创建的备份设备mybak中创建teachingData数据库的事务日志备份。BACKUP LOG teachingData TO mybakWITH INITGO
第32页:数据库的还原
数据库的还原
- 数据库还原是指将数据库备份加载到系统中的操作。
- 系统在还原数据库的过程中,自动执行安全性检查、重建数据库结构以及完成填写数据库内容。
第33页:还原前的准备
还原前的准备
- 还原数据库之前,首先要保证所使用的备份文件的有效性,并且在备份文件中包含所要还原的数据内容。
- 由于数据库的还原操作是静态的,所以在还原数据库时,必须禁止其它用户对该数据库进行操作。
第34页:例9:限制数据库访问
例9:限制数据库访问
- 修改数据库teachingData的属性,禁止其它用户对该数据库进行操作。
第35页:数据库的还原操作
数据库的还原操作
- 使用对象资源管理器中的菜单命令
- 使用T-SQL命令语句
第36页:使用对象资源管理器中的菜单命令
使用对象资源管理器中的菜单命令
- 例10,使用菜单命令还原数据库teachingData。
- 例11,使用菜单命令还原数据库teachingData,要求还原后的数据库名为teachingDB,还原后将其存放到E盘Data目录下。
第37页:使用T-SQL命令语句
使用T-SQL命令语句
- 例12,用名为mybak的备份设备的第2个备份来还原数据库teachingData。USE masterRESTORE DATABASE teachingDataFROM mybak
第38页:例13:还原数据库
例13:还原数据库
例13, 用D盘db_backup中名为teachingData.bak备份文件来还原teachingData数据库。USE masterRESTORE DATABASE teachingDataFROM DISK=’D:\db_backup\teachingData.bak’
第39页:例14:用备份设备mybak的第一个
例14:用备份设备mybak的第一个
- 用备份设备mybak的第一个备份集来还原数据库teachingData的完整备份,再用第三个备份集来还原差异备份。USE masterRESTORE DATABASE teachingDataFROM mybakWITH FILE=1, NORECOVERYGORESTORE DATABASE teachingDataFROM mybakWITH FILE=3GO
第40页:例15:用备份设备mybak的还原文
例15:用备份设备mybak的还原文
- 用备份设备mybak的还原文件来还原文件和文件组,再用第四个备份集来还原数据库teachingData的事务日志备份。USE masterRESTORE DATABASE teachingDataFROM mybakGORESTORE LOG teachingDataFROM mybakWITH FILE=4GO
第41页:例16:还原数据库与日志
例16:还原数据库与日志
例16 】用备份设备mybak的第一个备份集来还原teachingData,再用第二个备份集来还原数据库teachingData的事务日志备份。USE masterRESTORE DATABASE teachingDataFROM mybakWITH FILE=1, NORECOVERYGORESTORE LOG teachingDataFROM mybakWITH FILE=2GO
第42页:代理服务
代理服务
- SQL Server代理是一个Windows的后台服务,可以执行安排的管理任务,这个管理任务又叫做作业,每个作业包含了一个或多个作业步骤,每个步骤都可以完成一个任务。
- SQL Server代理指定的时间或在特定的事件条件下执行作业中的步骤,并记录作业的完成情况,一旦执行作业步骤出现错误,SQL Server还可以设法通知管理员。
- SQL Server的代理服务主要用于控制自动化任务,如备份数据、作业管理等。另外,还可以利用代理服务向数据库管理人员发出一些警告信息。
第43页:启动和停止SQL Server代理服务
启动和停止SQL Server代理服务
- 默认情况下,安装SQL Server 2005后,SQL Server代理服务是禁用的,除非用户明确选择自动启动该服务。
- 为了让SQL Server代理能够作为SQLServer代理服务运行,必须先SQL Server代理,才能使本地或多服务器管理任务自动运行。
- 我们可以从SQL Server配置管理器启动和停止SQL Server代理。
第44页:设置SQL Server代理服务的属性
设置SQL Server代理服务的属性
- 在“计算机管理“窗口中选择”服务应用程序/服务“,
- 右击【SQL Server Agent】,在弹出的快捷菜单中选择【属性】命令,即可打开服务代理的属性窗口进行相应的属性设置。
第45页:自动管理组件
自动管理组件
- SQL Server代理使用自动管理组件来定义要执行的任务、执行任务的时间及报告任务成功或失败的方式。
- 自动管理组件有四种:
第46页:作业:利用作业可以把数据库日常
作业:利用作业可以把数据库日常
- 利用作业可以把数据库日常操作自动化。我们可以把一个能执行一次或多次的管理任务定义为作业,SQL Server代理不仅可以执行这个管理任务,还可以监视执行结果是否成功。
- 作业可以在需要时从控制台运行、通过调度机制定期运行或响应其他条件运行,作业中还可包括处理各个任务故障的条件逻辑。
第47页:定义作业动作方式的语言
定义作业动作方式的语言
第48页:运行作业的方式
运行作业的方式
- 根据一个或多个计划
- 响应一个或多个警报。
- 执行sp_star_job存储过程。
第49页:计划:可以利用计划来指定作业运
计划:可以利用计划来指定作业运
- 可以利用计划来指定作业运行的时间
- 计划用于为作业运行的时间定义下列条件:
- 当SQL Server代理启动时运行作业。
- 当计算机的CPU使用率处于定义的空闲状态水平时运行作业。
- 在特定日期和时间到达时运行作业。
- 按重复执行的计划运行作业。
第50页:警报:SQL Server 2
警报:SQL Server 2
- SQL Server 2005中的警报是指对特定事件的自动响应。
- 警报与通知往往是结合使用的,警报用于设置事件,系统根据预先的设置对不同的事件发出不同的警报。通知是设置将警报发给谁?如何发?发送什么内容?
第51页:可以定义警报产生的条
可以定义警报产生的条
- 可以定义警报产生的条件有:
- SQL Server事件
- SQL Server性能条件
- 运行SQL Server代理的计算机上的WMI(WindowsManagement Instrumentation)事件。
- 警报可以执行的操作有:
第52页:操作员
操作员
- 操作员定义的是负责维护一个或多个SQLServer实例的个人联系信息。
- SQL Server代理的一个重要功能之一就是可以根据某些条件将警报通知给数据库管理人员,SQL Server可以使用电子邮件、Net Send和寻呼方式来通知管理员,管理员收到通知后即可处理相关问题。
第53页:作业管理
作业管理
- 创建作业
- 手动执行作业
- 调度作业
- 查看作业完成情况
- 删除、禁用与启用作业
第54页:例17:创建作业my_job1
例17:创建作业my_job1
- 创建作业my_job1,要求该作业依次执行以下三个步骤:
- ①backup_schedule:在数据库teachingData中创建表backup_schedule,该表包括二个字段:编号(INT IDENTITY(1,1))和备份时间(smalldatetime),要求将字段“编号”设置为主键。
- Insert_record:在表backup_schedule中插入一条记录,其备份时间为当前时间。
- Backup_teachingData:将数据库teachingData备份到D盘的db_back中。
第55页:例18:手动执行上例中创建的作业
例18:手动执行上例中创建的作业
第56页:例19:调度作业my_job1
例19:调度作业my_job1
- 调度作业my_job1,要求设置计划的名称为“备份数据库”,类型为“重复执行”,执行频率和时间设定为每周周日零点执行一次,该计划开始执行时间为2009-11-6,计划结束日期不限定。
第57页:例20:查看作业my_job1执行情
例20:查看作业my_job1执行情
第58页:警报管理
警报管理
第59页:例21:创建警报
例21:创建警报
- 创建警报my_alert1,设置该警报的【类型】为“SQL Server事件警报”,【严重性】为“019资源中的发生错误”,【响应】为“执行作业”my_job1。
第60页:操作员管理
操作员管理
- 在使用操作员之前须预先设置好通知操作员的方式,在出现故障时SQL Server代理才能知道如何去通知系统管理员来解决问题。
第61页:例22:创建操作员
例22:创建操作员
- 创建操作员my_operator,该操作员的电子邮件名称为:emily_mao@hotmail.com,Net send地址为Computer,寻呼电子邮件为operator1@mycompany.com,值班时间为周一~周五8:00-18:00,并要求将my_alert1警报发送给该操作员。
第62页:数据库的维护
数据库的维护
- 维护任务任务
- 维护计划的创建
- 维护计划的修改
- 维护计划的执行
第63页:维护任务任务
维护任务任务
- 使用各种典型维护任务创建工作流的功能。还可以创建自己的T-SQL脚本。
- 为维护计划设置概念性层次结构的功能。使用计划可以创建或编辑工作流,还可以安排计划在不同时间运行。
- 为了增强安全性,当使用SQL Server身份验证登录时,将不显示维护计划。只有使用Windows身份验证登录才能看到维护计划。
- 对象资源管理器中的“SQL Server代理”节点只对sysadmin、SQLAgentUserRole或MaintenanceUserRole角色成员显示。
第64页:维护计划的创建
维护计划的创建
- 创建维护计划最简单的办法就是使用维护向导。其操作方法为:在“对象资源管理器”中,展开【管理】,右击【维护计划】,弹出快捷菜单,选择【维护计划向导】,然后按照维护计划向导逐步进行操作。
第65页:例23:创建维护计划
例23:创建维护计划
- 创建维护计划MaintenancePlan1,要求在该维护计划依次完成以下任务:①执行SQL Server代理作业my_job1②将所有数据库备份到D盘中db_backup③清除6个月以前的所有历史数据,并要求将计划执行结果报告发送给操作员my_opertor。
第66页:维护计划的修改
维护计划的修改
- 创建维护计划后,可以【对象资源管理器】中的【管理】/【维护计划】和【SQLServer代理】/【作业】中可以看到维护计划和作业,右击维护计划名,选择【修改】命令,即可对维护计划进行修改。
第67页:例24:修改维护计划
例24:修改维护计划
- 执行SQL Server代理作业my_job1和任务
- 将所有数据库备份到D盘中db_backup之间插入一个任务:检查数据库teachingData的完整性。
- 清除6个月以前的所有历史数据并要求将计划执行结果报告发送给操作员my_opertor。
第68页:维护计划的执行
维护计划的执行
- 维护计划除了可以自动执行外,也可以手动执行,可以在对象资源管理器中右击维护计划名,然后选择【执行】命令。
- 其执行结果可以通过右击维护计划名,然后选择【查看历史记录】命令查看执行结果。
第69页:小结----备份和还原
小结----备份和还原
- SQL Server 2005提供的备份方式:完整备份和完整差异备份、部分备份和部份差异备份、事务日志备份。
- 除了要备份用户自己创建的数据库外,系统数据库中的master数据库和msdb数据库也应该备份,否则一旦系统崩溃,即使有用户数据库的备份也无法完全将其恢复。
- 数据库还原是指将数据库备份加载到系统中的操作。系统在还原数据库的过程中,自动执行安全性检查、重建数据库结构以及完成填写数据库内容。
第70页:小结----代理服务
小结----代理服务
- SQL Server代理是一个Windows的后台服务,主要用于控制自动化任务。
- 管理任务又叫做作业,每个作业包含了一个或多个作业步骤,每个步骤都可以完成一个任务。SQL Server代理指定的时间或在特定的事件条件下执行作业中的步骤,并记录作业的完成情况,一旦执行作业步骤出现错误,SQL Server还可以发出警报并设法通知管理员。
第71页:小结----维护计划
小结----维护计划
- 维护计划可以帮助我们设置核心维护任务,从而确保数据库运行正常,维护计划向导可创建一个或多个SQL Server代理作业。
- 代理作业将按照计划的间隔自动执行这些维护任务,可以在维护计划中设定的维护任务有:检查数据库完整性、收缩数据库、重新组织索引、重新生成索引、更新统计信息、清除历史记录、备份数据库等
第72页:作业:完成教材中的思考题和实验
作业:完成教材中的思考题和实验