资源描述
工程9: CJGL数据库的平安管理
对任何企业组织来说,数据的平安性最为重要。平安性主要是指允许那些具有相应的数据访问权限的用户,能够登录到SQL Server并访问数据以及对数据库对象实施各种权限范围内的操作。但是要拒绝所有的非授权用户的非法操作。因此平安性管理与用户管理是密不可分的。SQL Server 2005 提供了内置的平安性和数据保护。
SQL Server 2005 的平安性管理是建立在认证〔Authentication〕 和访问许可〔permission〕 两者机制上的认证,是指来确定登录SQL Server 的用户的登录账号和密码是否正确以此来验证其是否具有连接SQL Server 的权限,但是通过认证阶段并不代表能够访问SQL Server 中的数据用户,只有在获取访问数据库的权限之后才能够对效劳器上的数据库进行权限许可下的各种操作,主要是针对数据库对象,如表、视图、存储过程等。这种用户访问数据库权限的设置是通过用户帐号来实现的,同时在SQL Server 中角色作为用户组的代替物大大地简化了平安性管理。
能力目标:
² 能够配置效劳器的身份验证模式;
² 能够创立并配置登录账户;
² 能够为登录账户配置数据库访问许可;
² 能够为数据库用户指定数据访问权限;
² 能够通过角色设置批量实现用户权限管理。
知识目标:
² 熟悉SQL Server 2005的平安机制;
² 掌握效劳器登录账户的管理方法;
² 掌握数据库用户的权限管理方法;
² 理解角色的作用;
工作任务:
² 效劳器登录账户管理;
² 数据库用户管理。
任务1:效劳器登录账户管理
【任务描述】:用户要访问数据库,必须具备登录SQL Server效劳器的权限,可以通过两种途径登录效劳器:一是通过Windows系统用户身份;二是通过有效的SQL Server账户身份。用户如果不通过默认账户登录,那么必须为其创立登录账户。
子任务1:创立登录账户Win_User,通过Windows身份验证,并映射到CJGL数据库;
子任务2:创立登录账户Sql_User,通过SQL Server身份验证,并映射到CJGL数据库;
【预备知识】
1、SQL Server 2005身份验证机制
平安身份验证用来确认登录SQL Server的用户的登录账号和密码的正确性,由此来检验该用户是否具有连接SQL Server效劳器的权限。任何用户在使用SQL Server效劳器之前,必须经过身份验证。
SQL Server 2005提供了两种身份验证模式,分别是Windows身份验证和SQL Server身份验证。
1.1 Windows身份验证
SQL Server效劳器运行于Windows效劳器之上,而Windows作为网络操作系统,本身具备管理登录、验证用户是否合法的能力,因此Windows身份验证模式就是用户通过自己合法的Windows账户和口令进行验证,只要用户具备登录操作系统的权限,即可连接SQL Server效劳器
1.2 SQL Server身份验证
启用该模式通常也称为“混合验证模式〞,该认证模式下,用户连接SQL Server效劳器必须提供登录名和密码,这些登录信息存储在系统表syslogins中,与Windows账号无关。
注意:如果SQL Serve效劳器启用了混合验证模式,那么不但可以通过SQL Server账号登录,也可以请求Windows验证,然后通过Windows账户登录。
Windows身份验证平安性要比SQL Server验证高的多,因为SQL Server效劳器相比,操作系统具有更高的平安机制。
【任务实施】
子任务1:创立登录账户Win_User,通过Windows身份验证,并映射到CJGL数据库;
1、创立Windows系统账户,账户名为Win_User,步骤如下:
〔1〕在“桌面〞右键单击,选择“管理〞,翻开计算机管理窗口;
〔2〕展开“本地用户和组〞节点,右键单击“用户〞,选择“新用户〞命令,如下所示:
〔3〕然后在弹出的新用户对话框中输入用户名及密码,如下所示:
〔4〕单击“创立〞按钮。
2、将SQL Serve身份验证方式改为“Windows验证〞:
〔1〕以系统管理员账户登录SQL Server效劳器,如下所示:
〔2〕在效劳器节点上右键单击,选择“属性〞,如下所示:
〔3〕在弹出的效劳器属性窗口中,选择“平安性〞节点,然后在右边选中“Windows身份验证模式〞,如下所示:
〔4〕更改后,必须重启效劳器才能是设置生效,如下所示:
〔5〕单击“确定〞后,在效劳器节点上右键单击,选择“重新启动〞,如下所示:
3、将Win_User设置为SQL Server登录账户
〔1〕展开选择效劳器节点下的“平安性〞节点,在“登录名〞节点右键单击,选择“新建登录名〞
〔2〕在弹出的“登录名〞窗口中,单击“搜索〞按钮〔如果要输入登录名,必须确保输入正确〕,如下所示:
〔3〕在弹出的“选择用户和组〞对话框中,单击“高级〞按钮,如下所示:
〔4〕然后单击“立即查找〞按钮,在下面列出的对象中选择“Win_User〞,如下所示:
〔5〕单击“确定〞按钮,这时候在登录名文本框中会出现“FANXINGANG\Win_User〞〔这里的FANXINGANG视具体机器而定〕
〔6〕用户映射〔即使该登录账户具有访问数据库的权限〕:在“登录名〞窗口中,选择“用户映射〞项,然后在数据库列表中选择“CJGL〞,“数据库角色成员身份〞保持默认。如下所示:
〔7〕将Win_User设置为SQL Server登录账户后,可以通过Windows系统的切换用户方式,以Win_User登录操作系统,然后再连接SQL Server效劳器,过程略。
〔8〕登录账号创立成功后,可以通过该账号进行连接SQL Server效劳器,登录效劳器后,只能访问CJGL数据库,而不具备访问其他数据库的权限。比方要向访问“BooK〞数据库,将会出现以下错误:
子任务2:创立登录账户Sql_User,通过SQL Server身份验证,并映射到CJGL数据库;
1、将SQL Server效劳器身份验证方式改为“SQL Server和Windows身份验证模式〞,过程同上;
2、重启效劳器后,如上述过程翻开“登录名〞窗口,然后在登录名文本框中输入“SQL_User〞,选中“SQL Server身份验证〞单项按钮,输入密码及确认密码。如下所示:
3、用户映射方式同上,不再赘述。
任务2:数据库用户管理
【任务描述】创立了登录账户后,实际上只具备了连接效劳器的权限,即便在创立登录账户的时候进行了用户映射,默认状态下,映射后的数据库用户的数据库角色是“public〞,仍旧不具备访问用户定义对象的权限,因此需要为数据库创立相应用户并赋予相应权限。
子任务1:为CJGL数据库创立用户“DB_User〞,该用户通过登录账户“SQL_User〞登录效劳器;
子任务2:对用户“DB_User〞进行权限设置,其权限如下表所示〔“*〞表示具备权限〕:
平安对象
权限
SELECT
INSERT
UPDATE
DELETE
department
*
*
*
Class
*
*
*
Student
*
*
*
*
Course
*
*
Teacher
*
*
*
Timetable
*
score
*
子任务3:创立数据库角色“User_Role〞,其平安对象及权限设置为上表所示,并将数据库用户“DB_User〞的数据库角色设置为“User_Role〞
【预备知识】
1、数据库用户与架构
1.1 数据库用户
登录名:效劳器方的一个实体,使用一个登录名只能进入效劳器,但是不能让用户访问效劳器中的数据库资源。每个登录名的定义存放在master数据库的syslogins表中
数据库用户名:一个或多个登录对象在数据库中的映射,可以对用户对象进行授权,以便为登录对象提供对数据库的访问权限。用户定义信息存放在每个数据库的sysusers表中。
SQL SERVER把登录名与用户名的关系称为映射。用登录名登录SQL SERVER后,在访问各个数据库时,SQLSERVER会自动查询此数据库中是否存在与此登录名关联的用户名,假设存在就使用此用户的权限访问此数据库,假设不存在就是用guest用户访问此数据库。
一个登录名可以被授权访问多个数据库,但一个登录名在每个数据库中只能映射一次。即一个数据库中只能有一个用户名通过该登录名登录。好比SQLSERVER就象一栋大楼,里面的每个房间都是一个数据库。登录名只是进入大楼的钥匙,而用户名那么是进入房间的钥匙。一个登录名可以有多个房间的钥匙,但一个登录名在一个房间只能拥有此房间的一把钥匙。
连接SQL Server效劳器使用的是登录名而不是数据库用户名。
SQLSERVER中有几个特殊的登录名和用户名:
我们常见的dbo(用户名)是指以sa(登录名)或windows administration(Windows集成验证登录方式)登录的用户,也就是说数据库管理员在SQL SERVER中的用户名就叫dbo,而不叫 sa,这一点看起来有点蹊跷,因为通常用户名与登录名相同(不是强制相同,但为了一目了然通常都在创立用户名时使用与登录名相同的名字),例如创立了一个登录名称为me,那么可以为该登录名me在指定的数据库中添加一个同名用户,使登录名me能够访问该数据库中的数据.当在数据库中添加了一个用户me 后,之后以me登录名登录时在该数据库中创立的一切对象(表,函数,存储过程等)的所有者都为me,如me.table1,me.fn_test(),而不是dbo.table1,dbo.fn_test()。
SQL Server中还有一个特殊的数据库角色public,它存在于每一个数据库中,包括系统数据库,如master、msdb、model和用户数据库,数据库的所有用户都属于public角色,并且不能从public角色中删除。
在SQLSERVER数据库中,guest帐户是特殊的用户帐户。如果用户使用USE database语句访问的数据库中没有与此用户关联的帐户,此用户就与guest用户相关联。
1.2 架构〔schema〕
以往 SQL Server 内的对象命名是“效劳器.数据库.用户名.对象〞,但SQL Server 2005版本后的对象命名改为“效劳器.数据库.Schema.对象〞。这让你规划数据库对象命名时更有弹性。
架构是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的。
数据库引擎权限层次结构之间的关系图
在 SQL Server 2005 中,架构独立于创立它们的数据库用户而存在,亦即用户与架构别离,这种机制具有以下优点:
² 多个用户可以通过角色成员身份或 Windows 组成员身份拥有一个架构。这扩展了允许角色和组拥有对象的用户熟悉的功能。
² 极大地简化了删除数据库用户的操作:删除数据库用户不需要重命名该用户架构所包含的对象。因而,在删除创立架构所含对象的用户后,不再需要修改和测试显式引用这些对象的应用程序。
² 用户与架构〔schema〕分开,让数据库内各对象不再绑在某个用户账号上,可以解决之前版本“用户离开公司〞问题,也就是在拥有该对象的用户离开公司,或离开该职务时,不必要大费周章地更改该用户所有的对象属于新的用户所有。
² 另外,也可让 DBA 在安装某个套装软件时,设置该套装软件所用的数据库对象都属于某个特定的架构,容易区别。也就是说,在单一数据库内,不同部门或目的的对象,可以通过架构区分不同的对象命名原那么与权限。
² 可以用比早期版本中的粒度更大的粒度管理架构和架构包含的对象的权限。
2、效劳器角色和数据库角色
2.1 效劳器角色
是固化在SQL Server效劳器中的角色,每个效劳器角色都有其隐含的权限。使用系统存储过程sp_srvrolepermission可以浏览每个固定效劳器角色的权限。该系统过程的语法形式为:sp_srvrolepermission[[@srvrolename =] 'role_name']
固定效劳器角色
权限说明
Sysadmin
被赋予了SQL Server中的任何权限
Serveradmin
向该效劳器角色中添加其他登录
运行dbcc pintable命令(从而使表常驻于主内存中)
运行系统过程sp_configure(以显示或更改系统选项)
运行reconfigure选项(以更新系统过程sp_configure所做的所有改动)
使用shutdown命令关掉数据库效劳器
运行系统过程sp_tableoption为用户自定义表设置选项的值
Setupadmin
向该效劳器角色中添加其他登录
添加、删除或配置链接的效劳器
执行一些系统过程,如sp_serveroption
Securityadmin
向该效劳器角色中添加其他登录
读取SQL Server的错误日志
运行如下的系统过程:如sp_addlinkedsrvlogin、sp_addlogin、sp_defaultdb、sp_defaultlanguage、sp_denylogin、sp_droplinkedsrvlogin、sp_droplogin、sp_grantlogin、sp_helplogins、sp_remoteoption和sp_revokelogin(所有这些系统过程都与系统平安相关。)
Processadmin
向该效劳器角色中添加其他登录
执行KILL命令(以取消用户进程)
Dbcreator
向该效劳器角色中添加其他登录
运行CREATE DATABASE和ALTER DATABASE语句
使用系统过程sp_renamedb来修改数据库的名称
Diskadmin
向该效劳器角色中添加其他登录
运行如下系统过程:sp_ddumpdevice和sp_dropdevice。
运行DISK INIT语句
2.2 数据库角色
数据库角色被限制在一个数据库内,数据库角色分为两类:固定数据库角色和用户定义数据库角色。
固定数据库角色包括如下几类:
固定数据库角色
权限说明
db_owner
可以执行数据库中技术所有动作的用户
db_accessadmin
可以添加、删除用户的用户
db_datareader
可以查看所有数据库中用户表内数据的用户
db_datawriter
可以添加、修改或删除所有数据库中用户表内数据的用户
db_ddladmin
可以在数据库中执行所有DDL操作的用户
db_securityadmin
可以管理数据库中与平安权限有关所有动作的用户
db_backoperator
可以备份数据库的用户(并可以发布DBCC和CHECKPOINT语句,这两个语句一般在备份前都会被执行)
db_denydatareader
不能看到数据库中任何数据的用户
db_denydatawriter
不能改变数据库中任何数据的用户
除了上表中列出的固定数据库角色之外,还有一种特殊的固定数据库角色,名为public。
public角色是一种特殊的固定数据库角色,数据库的每个合法用户都属于该角色。它为数据库中的用户提供了所有默认权限。这样就提供了一种机制,即给予那些没有适当权限的所有用户以一定的(通常是有限的)权限。public角色为数据库中的所有用户都保存了默认的权限,因此是不能被删除的。
一般情况下,public角色允许用户进行如下的操作:
² 使用某些系统过程查看并显示master数据库中的信息
² 执行一些不需要一些权限的语句(例如PRINT)
3、平安对象与权限管理
平安对象是指授权用户可以访问的对象集合。
权限是指授权用户在拥有的平安对象上可以执行的操作。
权限管理包括权限的授予、拒绝和收回,可以通过SSMS向导和T-SQL语句实现权限管理。
【任务实施】
子任务1:为CJGL数据库创立用户“DB_User〞,该用户通过登录账户“SQL_User〞登录效劳器;
注意:开始本任务之前,需将CJGL数据库用户SQL_User〔任务1-子任务2创立〕删除,因为一个登录名只允许一个数据库用户绑定!
〔1〕展开数据库CJGL,展开其“平安性〞节点,选择“新建用户〞命令,如下所示:
〔2〕在弹出的“数据库用户〞窗口中,在用户名文本框中输入“DB_User〞,如下所示:
〔3〕单击登录名文本框右边的选择按钮,翻开“选择用户名〞对话框。如下所示:
〔4〕单击“浏览〞按钮,翻开“查找对象〞对话框,在对象列表中选择“SQL_User〞〔见任务1-子任务2〕,如下所示:
〔5〕依次单击“确定〞按钮,将创立数据库用户DB_User,但是该用户目前没有任何实际权限!
子任务2:对用户“DB_User〞进行权限设置,其权限如下表所示〔“*〞表示具备权限〕:
平安对象
权限
SELECT
INSERT
UPDATE
DELETE
department
*
*
*
Class
*
*
*
Student
*
*
*
*
Course
*
*
Teacher
*
*
*
Timetable
*
score
*
任务分析:
子任务1中创立的数据库用户DB_User因为不具备实际权限,因此以该用户身份登录效劳器后,在CJGL数据库中没有任何可用表及视图对象,如下所示:
要想为DB_User分配平安对象及权限,必须以管理员账号登录效劳器,因为DB_User尚不具备权限管理的权限!
1、通过SSMS向导完成权限的设置
〔1〕以Windows管理员账号登录SQL Server效劳器;
〔2〕展开CJGL数据库的“平安性〞节点,展开“用户〞节点;
〔3〕在用户“DB_User〞上右键单击,选择“属性〞命令;如下所示:
〔4〕在弹出的“数据库用户〞窗口中,选择“平安对象〞页,如下所示:
〔5〕在“平安对象〞栏下单击“添加〞按钮;
〔6〕在弹出的“添加对象〞对话框中,选择“特定类型的所有对象〞单项按钮,然后单击“确定〞按钮。如下所示:
〔7〕在弹出的“选择对象类型〞对话框中选中“表〞,然后单击“确定〞按钮。如下所示:
〔8〕回到“平安对象〞页后,依次选中平安对象,然后在下面的权限选择列表中选中相应的权限。如下所示〔以department平安对象为例〕
〔9〕将所有平安对象的权限设置完成后,单击“确定〞按钮即可。
2、利用T-SQL语句完成权限设置
〔1〕以Windows管理员账号登录SQL Server效劳器;
〔2〕在查询窗口中输入如下T-SQL语句:
--为DB_User用户授予department表的查询、插入、更新权限
GRANT SELECT,INSERT,UPDATE ON department TO DB_User
GO
--为DB_User用户授予class表的查询、插入、更新权限
GRANT SELECT,INSERT,UPDATE ON class TO DB_User
GO
--为DB_User用户授予student表的查询、插入、更新、删除权限
GRANT SELECT,INSERT,UPDATE,DELETE ON student TO DB_User
GO
--为DB_User用户授予course表的查询、插入权限
GRANT SELECT,INSERT ON course TO DB_User
GO
--为DB_User用户授予teacher表的查询、插入、删除权限
GRANT SELECT,INSERT,DELETE ON teacher TO DB_User
GO
--为DB_User用户授予timetable表的查询权限
GRANT SELECT ON timetable TO DB_User
GO
--为DB_User用户授予score表的查询权限
GRANT SELECT ON score TO DB_User
GO
〔3〕假设要收回权限,那么需要REVOKE语句实现,比方收回DB_User在class表的插入权限:
REVOKE INSERT ON class FROM DB_User
〔4〕假设要拒绝某个用户的权限,那么需要DENY语句实现,比方拒绝DB_User在class表的插入权限:DENY INSERT ON class TO DB_User
子任务3:创立数据库角色“User_Role〞,其平安对象及权限设置为上表所示,并将数据库用户“DB_User〞的数据库角色设置为“User_Role〞
任务分析:
假设有N位用户访问CJGL数据库,并且所有用户都拥有相同的平安对象和权限,那么作为DBA,是否需要一一为每个用户进行子任务2那样的设置?
数据库角色解决了这个难题,DBA只要将所有用户都参加到相同的数据库角色,即可免去一一设置权限的繁殖劳动!
〔1〕展开CJGL数据库的“平安性〞节点,展开“角色〞节点;
〔2〕在“数据库角色〞节点上右键单击,选择“新建数据库角色〞,如下所示:
〔3〕在“数据库角色〞窗口中,在角色名称文本框中输入“User_Role〞,如下所示:
〔4〕然后选择“平安对象〞页,如子任务2所示,将相关平安对象及权限设置完成;
〔5〕角色创立好后,翻开用户“DB_User〞的“属性〞窗口,在“数据库角色〞选择列表中选中“User_Role〞,然后单击“确定〞按钮即可。如下所示:
习题9
一、选择题
1. 一个系统管理员正在考虑应该使用一种平安模型。所有需要访问SQLServer的用户都有WindowsNT的帐户,而且SQLServer被安装在和用户帐户域相同域中的一个stand alone server上。所有的用户都使用TCP/IP和效劳器连接。系统管理员应该使用哪种平安模式?
A. 混合平安模式。 B. NT验证模式。C. 同时使用模式和混合平安模式。
2. 一个系统管理员正在考虑应该使用一种平安模型。用户使用多种网络协议对网络进行访问,而且SQL Server所在的效劳器是网络上唯一的一台Windows NT效劳器。系统管理员应该使用哪种平安模式?
A. 混合平安模式。B. NT验证模式。C. 同时使用混合平安模式和NT验证模式。
3.当系统管理员将他的效劳器配制成NT验证模式后,用户开始对他抱怨说他们无法使用他们的WindowsNT登录名访问效劳器。下面哪两个选项是最可能导致这种情况发生的原因?
A.系统管理员没有重新启动管理所有平安请求的SQL Server Agent效劳。
B.系统管理员没有重新启动SQL Server效劳。
C.系统管理员没有为任何用户授予对效劳器进行管理的访问权。
D.系统管理员没有使用SQL Server Management Studio对Windows NT帐户的登录名进行映射。
4.下面哪种网络库可用于NT验证模式?
A. TCP/IP Sockets。 B. SPX。 C. Named Pipes。 D. All of the above。
5. 关于平安性模式的信息保存在哪里?
A.注册表
6.系统管理员在为他新的助手Dave创立帐户时遇到了问题。Dave需要管理效劳器上的两个数据库,但无权访问其余的数据库。效劳器当前被配置使用标准平安模式,系统管理员怎样才能最好地完成这项任务?
A.给Dave提供sa登录名的口令。
B.为Dave新建一个登录名,在相应的数据库上用db_changeowner,使Dave成为数据库的属主。
C.为Dave新建一个登录名,在相应的数据库上将dbo作为这个登录名的别名。
D.使用SQL Server Management Studio给Dave分配数据库属主的权限。
7. 假定Guest用户存在,下面哪种情况导致登录名使用Guest访问数据库?
A.在目标数据库上登录名没有被分配用户和别名。
B.登录用户有一个分配的用户名,但想以guest登录使用只读权限。
C.登录名没有对应的WindowsNT帐户。
D.登录名在数据库中没有分配用户,但使用dbo作为别名。
8.哪个数据库拥有sysusers表?
A.所有用户定义的数据库拥有sysusers表。
B.所有数据库拥有sysusers表。
C. Master数据库。
D. 这个系统表保存在Windows NT的注册表中。
9. 哪个数据库拥有syslogins表?
A.所有用户定义的数据库拥有syslogins表。
B.所有数据库拥有syslogins表?
C. Master数据库。
D. 这个系统表保存在Windows NT的注册表中。
10. 一个叫John的数据库用户创立了一个名为Inventory的表,并且需要为用户Jennifer提供访问表的权限。John使用了正确的Grant命令。Jennifer使用哪条语句才能从表中Select出所有的记录?
A. Select * from Inventory。
。
。
D. Select * from John(Inventory)。
11. Norm想允许Cliff能够在他的表Beverages上进行授权,想让Cliff只能给其他用户授予Select权限,并且Cliff只有Select权限,Norm应该使用下面哪条语句?
A. Grant Select on Beverages to Cliff with grant option。
B. Grant Select on Beverages to Cliff 。
C. Grant all on Beverages to Cliff with grant option。
D. Grant Select on Beverages to Cliff, public with grant option。
12. 经过进一步的考虑,Norm现允许Cliff在表Beverage上进行Select操作不太可靠,他怎样将权限收回呢?
A. Revoke Select on Beverages to Cliff。
B. Revoke Select on Beverages from Cliff。
C. Revoke Select on Beverages from Cliff with cascade。
D. Revoke Select on Beverages from public。
工程10: CJGL数据库的备份与恢复
人为错误、硬件损坏、文件丧失或是系统错误等都可能造成数据库系统数据丧失甚至数据库崩溃,为了防止发生此类问题,应该定期备份数据库,尤其是存储重要数据的数据库。当备份数据库以后,如果发生问题,可以通过数据恢复来复原数据库,将损失降到最低,或将停止效劳的时间尽量缩短,保证数据库系统的正常运转。
能力目标:
² 能够进行数据库的完整备份;
² 能够进行数据库的差异备份;
² 能够根据需要选择数据库的恢复模式;
² 能够利用数据库备份进行数据库恢复;
² 能够制定日常维护方案。
知识目标:
² 掌握备份与恢复原理;
² 熟悉数据库恢复模式;
² 掌握数据库备份恢复方法;
² 了解DBA日常工作范围。
工作任务:
² 备份CJGL数据库;
² 利用备份进行恢复;
² 制定日常维护方案。
任务1:备份CJGL数据库
【任务描述】:数据库备份是DBA的日常工作之一,也是最重要的工作之一,这关系到企业的正常运转。
子任务1:为CJGL数据库创立备份;
子任务2:为CJGL创立差异备份;
子任务3:创立如下维护方案:
【预备知识】
数据库管理员〔DBA〕都有可能遇到数据库崩溃的时候,轻那么使企业正常业务系统不能运转,重那么导致企业灾难性损失,因此数据备份是DBA最重要的职责之一。
SQL Server数据库系统主要由两类文件组成,分别是数据文件和日志文件,其中数据文件存储数据,日志文件记录所有事务及每个事务对数据库的修改。事务日志是数据库的重要组件,如果系统出现故障,它将成为最新数据的唯一来源。删除或移动日志文件之前,必须完全了解此操作带来的后果。
1、数据库恢复模式
恢复模式是数据库的一个属性,用于控制数据库备份和恢复的根本行为,可以通过设置数据库属性选择数据库的恢复模式。
恢复模式包括以下3种:
〔1〕简单恢复模式
此模式下的数据库备份,不会备份事务日志,因此管理简单。在简单恢复模式下,系统会自动截断事务日志,以删除所有不活动的日志文件,所以备份效率较高。但是,该模式下数据库只能恢复到最近的一次备份,而其间发生的变化无法恢复。
简单恢复模式不适合生产系统,因为对于企业而言,丧失最新发生的数据是不可接受的。应当采用完整恢复模式。
〔2〕完整恢复模式
此模式完整记录了所有的事务,并保存所有的事务日志记录,直到将它们备份。完整恢复模式能够将数据库恢复到故障时间点〔如果故障发生后备份了日志尾部〕
〔3〕大容量日志恢复模式
此模式是完整恢复模式的补充,与完整恢复模式〔完全记录所有事务〕相比,大容量日志恢复模式只对大容量操作进行最小记录〔尽管会完全记录其他事务〕。大容量日志恢复模式保护大容量操作不受媒体故障的危害,提供最正确性能并占用最小日志空间。
但是,大容量日志恢复模式会增加这些大容量复制操作丧失数据的风险,因为大容量日志操作阻止再次捕获对每个事务逐一所做的更改。如果日志备份包含大容量日志操作,那么无法复原到该日志备份中的时点,而只能复原整个日志备份。
2、数据备份
2.1 数据库备份类型
备份一般包括3种方式:数据备份、差异备份以及在完整恢复模式和大容量日志恢复模式下的事务日志备份。
〔1〕数据备份:这是最完整的数据库备份方式,它会将数据库内所有的对象完整地拷贝到指定的设备上。由于它是备份完整内容,因此通常会需要花费较多的时间,同时也会占用较多的空间。
〔2〕差异备份:差异数据库备份只会针对自从上次完全备份后有变动的局部进行备份处理,这种备份模式必须搭配完全数据库备份一起使用,最初的备份使用完全备份保存完整的数据库内容,之后那么使用差异备份只记录有变动的局部。由于差异数据库备份只备份有变动的局部,因此比起完全数据库备份来说,通常它的备份速度会比拟快,占用的空间也会比拟少。对于数据量大且需要经常备份的数据库,使用差异备份可以减少数据库备份的负担。
假设是使用完全备份搭配差异备份来备份数据库,那么在复原数据库的内容时,必须先加载前一个完全备份的内容,然后再加载差异备份的内容。
〔3〕事务日志备份:事务日志备份是针对自从上次备份后有变动的局部进行备份处理,而不是针对上次完全备份后的变动。假设是使用完全备份配合事务日志来备份数据库,那么在复原数据库内容时,必须先加载前一个完全备份的内容,然后再按顺序复原每一个事务日志备份的内容。
2.2 备份设备
SQL Server将备份创立在备份设备上,如磁盘或磁带媒体,备份或复原操作中使用的磁盘或磁带称为“备份设备〞。
注意:将备份与数据库文件放在同一磁盘驱动器会有一定风险,如果磁盘发生故障,那么无法恢复数据库!
备份设备的标识可以通过物理设备名称或逻辑名称,其中物理设备名称是操作系统用来标识备份设备的名称,通常包括物理路径及名称,比方D:\backup\full.bak。而逻辑名称是用户定义的别名,用来标识物理备份设备。
【任务实施】
子任务1:为CJGL数据库创立备份;
虽然可以直接使用物理设备名称〔比方磁盘目录〕进行备份与恢复操作,但更好的方法是事先创立逻辑设备〔与虚拟目录相似〕,然后利用逻辑设备名称进行备份与恢复。
1、创立备份设备
〔1〕展开SQL Server效劳器的“对象资源管理器〞,展开“效劳器对象〞,然后右键单击“备份设备〞,选中“新建备份设备〞命令,翻开备份设备对话框,如下所示:
〔2〕输入备份设备名称“CJGL_Backup〞,然后单击“文件〞目录右边的按钮,翻开定位文件对话框,选择文件存放的物理路径,输入文件名称“〞,如下所示:
〔3〕单击“确定〞按钮完成设备创立。
2、完整备份
〔1〕翻开“CJGL〞数据库属性窗口,选中“选项〞页,将数据库恢复模式选择为“完整〞,如下所示:
〔2〕右键选中“CJGL〞数据库,选中“任务\备份〞命令,翻开数据库备份对话框,如下所示:
〔3〕在备份数据库窗口的“常规〞页中,单击“目标〞中的“删除〞按钮〔备份不保存在默认目录中〕,然后单击“添加〞按钮,弹出“选择备份目标〞对话框,如下所示:
〔4〕选择“备份设备〞,然后在下拉列表中选择CJGL_Backup,将备份创立到该设备;
〔5〕依次单击“确定〞按钮后,将开始备份数据库〔该过程时间视数据库规模而定〕,备份完成后,将弹出“备份已完成〞对话框,如下所示:
〔6〕单击确定后,将完成数据库的完整备份。
3、大容量日志备份、简单备份
备份过程与上述过程类似,不再赘述。
子任务2:为CJGL创立差异备份;
差异备份是在完整备份的根底上进行,如果没有完整备份,那么创立不了差异备份。
备份过程与上述过程类似,只是在选择备份类型的时候要选中“差异〞。
子任务3:创立如下维护方案:
注意:创立维护方案之前,必须保证SQL Server Agent效劳〔代理效劳〕启动。
1、创立收缩数据库任务
〔1〕展开SQL Server效劳器,展开“管理〞节点,在“维护方案〞上右键单击,选择“新建维护方案〞,如下所示:
〔2〕在弹出的“新建维护方案〞对话框中输入维护方案名称“MaintenancePlan〞,如下所示:
〔3〕单击“确定〞后,在“对象资源管理器〞下方会出现工具箱,如下所示:
〔4〕在工具箱中选中“收缩数据库任务〞,按住鼠标左键,将其拖放到右边维护方案设计窗口中,这时将出现一个任务框。如下所示:
〔5〕在此任务框上,右键单击,选择“编辑〞命令,翻开“收缩数据库任务〞对话框,如下所示:
〔6〕在选择数据库的下拉列表中选中“CJGL数据库〞如下所示:
〔7〕然后指定在500MB时执行数据库收缩操作,收缩后保存10%可用空间,并选择“将释放的空间归还操作系统〞,如下所示:
〔8〕单击“确定〞后,收缩数据库任务框将变成如下所示:
2、创立备份数据库任务
〔1〕从工具箱中将“备份数据库任务〞拖放到设计窗口中,如下所示:
〔2〕在备份数据库任务框上右键单击,然后选择“编辑〞命令,翻开备份数据库任务对话框;
〔3〕在选择数据库的下拉列表中选中“CJGL数据库〞后,备份数据库任务对话框将显示配置选项,如下所示:
〔4〕备份类型选择“差异〞,备份目标选择“磁盘〞,备份文件夹选择“D:\Backup〞,然后单击“确定〞按钮。
3、设置多个任务的先后顺序
假设每次执行该维护方案,先执行收缩数据库任务,然后再执行数据库备份任务。
〔1〕选中“收缩数据库任务〞框;
〔2〕在出现的绿色箭头上按住鼠标左键,将其拖放到“备份数据库任务〞框,如下所示:
4、配置作业方案属性
〔1
展开阅读全文