您好,欢迎访问三七文档
1综合实验二数据库保护信息学院电子信息工程廖朋20141060269目的和要求1.了解数据库备份和还原的基本方法,掌握备份和还原的基本技术;2.掌握SQLServer2000提供了三种封锁机制;(了解内容)3.掌握SQLServer2000中有关用户、角色及操作权限的管理方法;4.掌握约束、规则和默认值的概念及实施方法。内容和步骤一、数据库恢复1.数据库的备份SQLServer2000有数据库完全备份、数据库差异备份、事务日志文件备份、文件及文件组备份等四种形式。本实验主要介绍数据库完全备份。利用企业管理器进行备份:当完成备份设备的创建后,便可以进行数据库的备份。若没有创建任何备份设备,则打开备份数据库程序时,此时会提醒用户必须先创建备份设备。在所创建的“数据库备份”项目上,单击鼠标右键,选择“备份数据库”。2图1选择“备份数据库”命令打开“SQLServer2000备份”属性设置页。图2“SQLServer2000备份”属性设置页示范“booksale”的备份。而且选择完整数据库备份的方式。单击“添加”后,默认值为“文件名”的方式,更改为“备份设备”的方式。图3选择备份目的选择创建的“数据库备份”设备。选择设备后,按“确定”按钮3图4选择备份设备在最下面的“调度”项目中,设置备份计划,假设在“调度”前打勾,系统就会有一个默认的备份计划。图5设置备份计划除了系统默认值外,也可以按右下角的“更改”按钮,去改变备份时间。图6改变备份时间可以看到系统调度的时间,同时也可以更改成自己的时间设置。图7编辑作业调度另外,也可以查看SQLServer2000备份的“选项”属性设置页。在系统中的选项设置4上,选择了“检查媒体集名称和备份集是否到期时间”。图8查看SQLServer2000备份的“选项”属性设置页经过前面步骤的设置,当我们按下“确定”按钮后,马上可以进行备份。图9完成步骤设置正在进行“营销”的备份5图10正在进行备份备份完成。图11备份完成备份文件创建后,可以复制到其他地方,也可以改名。2)利用Transact-SQL命令进行备份备份数据库的命令的语法是:DUMPDATABASE{dbname|@dbname_var}TOdump_device1[,dump_device2[,…,dump_device32]][WITHoptions]·dbname|@dbname_var指定要备份的数据库;·dump_device1[,dump_device2[,…,dump_device32]]指定转储设备;·options指定一些备份时使用的选项,如UNLOAD、NOUNLOAD等。2.数据库的还原1)利用SQLServer2000EnterpriseManager进行还原选择“SQLServer2000企业管理器”的菜单中“工具”→“还原数据库”的选项。6图12选择“还原数据库”的选项于是系统打开了“还原数据库”的设置项目页。图13“还原数据库”的设置项目页首先,我们选择要还原的数据库(营销),然后再选择要还原哪一次备份。7图14选择要还原哪一次备份针对备份记录,在上一步中,可以按下“属性”按钮,查看更详细的备份记录。另外,也可以改变还原的备份设备。图15查看备份级属性下图为选择还原设备,这里选择数据库备份。8图16选择还原设备接下来查看“还原数据库——选项”设置页。在此可以看到还原的数据库文件为“营销_Data.MDF”与“营销_Log.LDF”两个文件。必要时,可以选择“在现有的数据库上强制还原”。图17“还原数据库——选项”设置页按下“确定”按钮后,SQLServer2000便开始进行还原数据库的操作。图18开始还原数据库9还原数据库完成。图19还原数据库完成关于权限问题:还原操作要求登录用户具有sysadmin和dbcreate的固定服务器脚色,方可进行。只有db_owner权限的用户是不能进行还原操作的。2)用Transact-SQL命令进行还原(可不做)还原数据库的命令的语法是:RestoreDATABASE{dbname|@dbname_var}Frombackup_device1[,backup_device2[,…,backup_device32]][WITHoptions]·dbname|@dbname_var指定要还原的数据库;·backup_device1[,backup_device2[,…,backup_device32]]指定备份设备;·options指定一些还原时使用的选项,如UNLOAD、NOUNLOAD等。二、并发控制(了解为主,不要求掌握)1.SQLServer2000提供了三种封锁机制为了保证数据的一致性,并且允许最大量的并发用户,SQLServer2000提供了三种封锁机制,即独占封锁、共享封锁和更新封锁。封锁的对象可以是表格、页或者记录。1)共享封锁共享封锁是为读操作设置的一种封锁,目的是想读到一组不变的数据,也就是在读数据的过程中,不允许其他用户对该数据进行任何修改操作。2)更新封锁当需要对一个记录或一组记录进行更新时(只是修改,不包括插入和删除)使用更新封锁,该封锁的目的是防止其他用户在同一时刻修改同一记录。已经实施更新封锁的记录,拒绝来自其他用户的更新封锁或独占封锁。103)独占封锁独占封锁也叫排他封锁,这是最严格的一类封锁。当需要对表实施插入、删除或修改操作时,应该使用独占封锁。已经实施独占封锁的表,拒绝来自其他用户的任何封锁,但不拒绝其他用户的一般读操作。所有的封锁都将在事务结束(提交或撤消)时自动释放。SQLServer2000使用SELECT语句完成封锁操作,在指定选择的表的同时在FROM子句中指定对表所实施的封锁。2.SQLServer2000的封锁命令SQLServer2000的封锁操作是在相关语句的“WITH(table_hint)子句中完成的,可用在SELECT、INSERT、UPDATE、DELETE等语句中指定表级锁定的方式和范围。常用的封锁关键词有:TABLOCK:对表施加共享锁,在读完数据后立即释放封锁,它可以避免读“脏”数据,但可能引起不可重复读问题。HOLDLOCK:与TABLOCK一起使用,可将共享锁保留到事务完成,而不是在读完数据后立即释放,它可以保证数据的可重复读。NOLOCK:不施加任何封锁,仅用于SELECT语句,它会引起读“脏”数据。TABLOCKX:对表施加排它锁。UPDLOCK:对表中指定元组施加更新锁,这时其他事务可对同表中的其他无组也施加更新锁,但不能对表施加任何锁。3.SQLServer2000的隔离级别SQLServer2000支持标准SQL中定义的4种隔离级别:未提交读(READUNCOMMITED):事务隔离的最低级别,仅可保证不读物理损坏的数据。提交读(READCOMMITED):SQLServer2000的默认级别,可以保证不读“脏”数据。可重复读(REPEATABLEREAD):可以保证读一致性。可串行化(SERIALIZABLE):事务隔离的最高级别,事务之间完全隔离,在该级别上可以保证并发事务均是可串行的。事务必须运行在可重复读或更高隔离级别上才可防止丢失更新设置隔离级别的命令是:SETTRANSACTIONISOLATIONLEVEL{READCOMMITED|READUNCOMMITED|REPEATABLEREAD|SERIALIZABLE}11例1:对学生表Student实施一个共享封锁,并且保持到事务结束时再释放封锁,相应的命令是:SELECT*FROMStudent(TABLOCKHOLDLOCK)例2:现在再来考虑一下火车票售票系统,显然采取更新封锁最为合适。假设售票信息存放在关系R(日期,车次,座别,座位号,状态)中,其中座别说明是软卧(RW)、硬卧(YW)、软座(RZ)或硬座(YZ),状态表明车票是否售出,初值为NULL。下面是相应的程序段:DECLARE@ddatetime,@tchar(6),@schar(2),@nchar(10)BEGINTRANSACTIONSELECT@n=座位号FROMR(UPDLOCK)WHERE日期=@dAND车次=@tAND座别=@sAND状态ISNULLIF…UPDATERSET状态=“Y”WHERE座位号=@nAND日期=@dAND车次=@tAND座别=@sCOMMITTRANSACTIONELSEROLLBACKTRANSACTION…本程序段只包含了和封锁及更新有关的核心语句,其他语句都省略了。其中的SELECT语句查询并封锁一条车票记录,UPDATE语句完成更新操作。如果完成更新则提交事务并自动释放封锁,否则就撤消事务并自动释放封锁。三、数据库的安全性控制1.SQLServer2000的安全模式SQLServer2000提供了三种安全管理模式,即标准模式、集成模式和混合模式,数据库设计者和数据库管理员可以根据实际情况进行选择。SQLServer2000的默认安全模式是标准模式,在这种安全模式下,由SQLServer2000独立来管理自己的数据库安全。12集成安全模式是将WindowsNT的安全管理集成到SQLServer2000下,即用户只要登录到WindowsNT,就可以通过信任连接直接连接到SQLServer2000。也就是说,集成模式使用的是信任连接,WindowsNT的用户就是SQLServer2000的用户。设置SQLServer2000的安全模式可以在安装SQLServer2000时完成,也可以在安装后以系统管理员的身份注册,然后使用SQLEnterpriseManager工具的有关选项进行设置。如果选择的是标准模式或混合模式,则必须创建用户和用户组。2.创建用户和用户组如果选用的是集成模式,则在WindowsNT下创建的用户就是SQLServer2000的用户;否则就必须在SQLServer2000下创建用户和用户组,这些工作可以在SQLServer2000EnterpriseManager中完成,也可以利用sp_addgroup、sp_addlogin、sp_adduser等系统存储过程以命令交互方式来完成。在安装SQLServer2000之初,只有两个用户,一个是sa(系统管理员),另一个是guest(系统安装时创建的一个可以对样板数据库作最基本查询的用户)。Sa作为系统管理员或数据库管理员,在SQLServer2000上有至高无上的权利,可以做任何事情)1)为SQLServer2000增加用户为SQLServer2000增加新的用户,可以执行系统存储过程sp_addlogin,它的格式如下:Sp_addloginlogin_id[,passwd[,defdb[,deflanguage]]]其中:Login_id为注册标识或SQLServer2000用户名;Passwd为口令,默认口令是NULL,用户可以在任何时候使用;sp_password系统存储过程改变自己的口令;Defdb指定用户在注册时连接到的默认数据库,如果没有指定默认数据库,则默认数据库是master;Deflanguage说明用户注册到SQLServer2000时使用的默认语言代码。2)为数据库增加用户只要是数据库所有者,就可以指定数据库用户学生上机时,可以将邻桌用户作为自己的一般用户(即只有public)数据库拥有者可以将访问或连接到自己的数据库的权限授予其他用户,即为自己的数据库增加新的用户。这可以用系统存储过程sp_adduser来完成,它的格式是:sp_adduserlogin_id[,username[,grpname]]133)使用组创建组的系统存储过程是sp_addgroup,它的格式是:sp_addgroupgrpname4)口令口令用来确认一个注册用户名是否正确,只有通过注册名和口令的验证才可以登录到SQLServer2000并连接到数据库。系统管理员在创建SQLServer2000用户时可以同时为之分配一个口令,用户可以在任何时候利用系统存
本文标题:综合实验二
链接地址:https://www.777doc.com/doc-2066603 .html