数据库原理与应用-项目十_第1页
数据库原理与应用-项目十_第2页
数据库原理与应用-项目十_第3页
数据库原理与应用-项目十_第4页
数据库原理与应用-项目十_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习目标:

熟练掌握数据库备份和还原的方法2

培养团队协作精神、语言表达能力4熟悉数据安全认证的内容,实现数据安全设置31

熟练掌握数据导入导出的方法33任务的提出在部分将首先介绍SQLServer的安全访问机制,介绍SQLServer系统中登录账户、用户、角色和权限的管理方法与操作技巧。最后还将介绍SQLServer系统中实现数据安全的保障机制——数据备份与恢复。主要介绍数据库备份与恢复的策略和原则,实现数据库备份与恢复的方法和操作技巧。SQLServer2008的安全机制安全性是指保护数据库不被破坏、偷窃和非法使用。两级权限管理

1):服务器级“连接权”是否允许访问sqlserver数据库。

2):数据库级“访问权”是否允许在数据库上进行操作。登录验证模式:SQLServer验证和WindowsNT/2000验证。服务器登录账号:SQLServer账号和WindowsNT账号。设置安全验证模式:仅Windows模式和混合模式。

注意:更改验证模式后,必须停止并重新启动SQLServer服务,设置才生效。SQLServer2008的身份验证模式Windows身份验证模式允许用户通过windowsnt4.0或windows2000用户帐户进行连接,SQLServer通过windowsnt4.0或windows2000获得用户信息,重新验证用户的帐户名和密码。用户的网络安全性在网络登陆时建立,并通过windows域控制器进行验证。当网络用户尝试连接时,SQLServer使用基于windows的功能对网络用户名进行验证,然后基于网络用户名允许或拒绝登陆访问,而不要求单独的登陆名和密码。Windows身份验证当用户使用指定的登陆名称和密码进行非信任连接时,SQLServer通过检查是否已设置SQLServer登陆账户,以及指定的密码是否与以前记录的密码匹配进行身份验证。如果SQLServer未设置登陆账户,身份验证将失败,而且用户将收到错误信息。

SQLServer身份验证Windows和SQLServer身份验证比较Windows身份验证SQLServer身份验证当用户登陆到Windows域时,用户名和密码在被传递到windows域控制器之前被加密Windows操作系统从不验证用户支持复杂加密、密码的截止日期和最短长度等密码策略不支持密码策略支持账户锁定策略,在使用无效密码进行多次尝试以后所定账户不支持账户锁定策略在windows98/me操作系统中不能使用在windows98/me操作系统中可以使用选择身份验证模式基于windows身份验证和sqlserver身份验证,有windows身份验证模式和混合验证模式两种模式可选。如果选择windows身份验证模式,那么用户只能使用windows身份验证连接到sqlserver2000;如果选择混合验证模式,那么用户既可以使用windows身份验证,也可以使用sqlserver身份验证模式。

在SQLServer2008中设置身份验证模式(1)启动SQLServerManagementStudio,连接相关数据库实例。在【对象资源管理器】窗格里右击数据库实例名,在弹出的快捷菜单里选择【属性】选项。如图10.3所示(2)在弹出的【服务器属性】对话框中,打开【安全性】选项页。如图10.4所示(3)在SQLServer2008中可以使用的身份验证模式有两种,一种是windows身份验证模式,另一种是SQLServer和Windows身份验证模式,也就是可以同时使用SQLServer身份验证模式和Windows身份验证模式。在SQLServer2008中不能单独使用SQLServer身份验证模式。(4)【登录审核】,可以选择的选项有:“无”表示不执行审核;“成功”表示只审核成功的登录尝试;“失败”表示只审核失败的登录尝试;“全部”表示审核成功的和失败的登录尝试。其作用是选择在SQLServer错误日志中记录的用户访问SQLServer的级别。(5)【启动服务账户】,是决定服务登录的账户。(6)修改完毕后单击【确定】按钮完成操作。访问权限在SQLServer2008中,权限可以分为两个方面:一个是对数据库服务器本身的控制权限,例如创建、修改、删除数据库,管理磁盘文件,添加、删除链接服务器等;另一个是对数据库数据的控制权限,例如可以访问数据库中的哪些数据表、哪些视图、哪些存储过程,或者是对数据表可以执行哪些操作,是insert,还是update,或是select等。在SQLServer2008里,可以把访问权限设置给用户或角色。登录用户设置SQLServer中的账户包含两种:登录账户、数据库用户账户。登录账户是面对整个SQLServer管理系统的,某位用户必须使用特定的登录账户才能连接到SQLServer,但连接上并不说明就有访问数据库的权力。数据库用户账户则针对SQLServer管理系统中的某个数据库而言,当某位用户用合法登录账户连接到SQLServer后,还必须在所访问的数据中创建数据库用户账户。使用SQLServerManagementStudio添加登录用户(1)启动SQLServerManagementStudio,以sa账户或windows管理员账户连接数据库实例。在【对象资源管理器】窗格里选择【数据库实例名】--【安全性】--【登录名】选项。如图10.5所示(2)右击【登录名】选项,在弹出的快捷菜单里选择【新建登录名】选项,弹出图10.6所示的对话框。在该对话框中可以添加一个能登录SQLServer服务器的用户名。如前所说,数据库身份验证有两种模式,一种是Windows身份验证模式,一种是SQLServer身份验证模式。在此可以添加两种验证模式的用户。如选择【Windows身份验证】按钮,那么在【登录名】文本框里可以输入要用来登录SQLServer服务器的windows账户名,该账号应该是可以登录windows操作系统的账号。如选择【SQLServer身份验证】按钮,那么在【登录名】文本框里可以输入要用来登录SQLServer服务器的新用户名。此时会要求输入该用户的密码。如选择【强制实施密码策略】选项,则会要求一定要输入密码,否则可以将该用户设置为空密码,不过为了系统安全,不建议使用空密码。如果选择了【强制密码过期】选项,则会对该登录账号强制实施密码过期策略。如果选择了【用户在下次登录时必须更改密码】选项,则首次使用登录名时,SQLServer会提示用户输入新密码。(3)在【默认数据库】下拉列表框里可以为该登录账号选择默认的数据库(4)在【默认语言】下拉列表框里可以为登录账户选择默认的语言。使用系统存储过程添加登录用户添加windows类型登录用户

可以使用存储过程sp_grantlogin将windows用户或组账户以Windows身份验证的方式连接到SQLServer实例。其语法格式为:sp_grantlogin[@loginame=]'login'参数说明:[@loginame=]'login':是要添加的Windows用户或组的名称。Windows组和用户必须用Windows域名限定,格式为“域\用户”,例如zhenaj\student。【任务10.1】使用T-SQL语句创建一个windows类型的登录用户EXECUTEsp_grantlogin'tongtong-pc\student'该语句执行结果如图10.7所示。添加SQLServer类型登录用户如果用户没有Windows操作系统账户,但又要访问SQLserver服务器,则只能为其建立SQLServer登录账户。可以使用存储过程sp_addlogin将用户以SQLServer身份验证的方式连接到SQLServer实例。其语法格式如下:sp_addlogin[@loginame=]'login'[,[@passwd=]'password'][,[@defdb=]'database'][,[@deflanguage=]'language'][,[@sid=]sid][,[@encryptopt=]'encryption_option']【任务10.2】使用T-SQL语句创建SQLServer登录账号EXECUTEsp_addlogin'STU','123456','myDB'该语句执行的结果如图10.8所示。修改登录账户的属性对于创建好的登录账户,可修改的属性有:默认数据库默认语言登录账户是SQLServer账户的口令删除登录账户使用SQLServerManagementStudio删除登录账户(1)启动SQLServerManagementStudio,以sa账户或windows管理员账户连接数据库实例。在【对象资源管理器】窗格里选择【数据库实例名】--【安全性】--【登录名】选项。(2)右击欲删除的登录名,在弹出的快捷菜单里选择【删除】命令,在打开的【删除对象】窗口中点击【确定】按钮,完成删除。如图10.9所示使用存储过程删除登录账户可以使用存储过程sp_droplogin删除SQLServer登录,以阻止使用该登录名访问SQLServer实例。其语法格式如下:sp_droplogin[@loginame=]'login'【任务10.3】要删除一个使用SQLserver身份验证的登录账户“STU”完成【任务10.3】的T-SQL语句为:EXECUTEsp_droplogin'STU'EXECUTEsp_revokelogin'zhenaj\student'使用用户登录创建完新登录名之后,就可以使用该账户登录到数据库实例中。打开SQLServerManagementStudio,在图10.7所示的【连接到服务器】对话框里输入刚才创建的登录名和密码,单击【确定】。数据库用户设置创建登录账户后,用户只能连接SQLserver服务器而已,还没有访问某个具体数据库的权限,还不能操纵数据库中的数据。用户要拥有访问数据库的权限,还必须将登录账户映射到数据库用户。用户是通过登录账户与数据库用户的映射关系取得对数据库的实际访问权的。如果登录账户没有被映射到一个数据库用户上时,也有一种访问数据库的方法。如果在数据库中存在guest用户,则登录账户将自动映射到guest用户,并获得对应的数据库访问权限。但是直接对用户授权比允许使用guest用户的方法更好。要想使guest用户账户有效,只需创建一个叫guest的用户,而且不需要一个映射的登录账户。创建数据库用户使用SQLServerManagementStudio创建数据库用户【任务10.4】将前面创建的SQLserver身份验证登录账户“STU”添加到mydb数据库中。(1)启动SQLServerManagementStudio,以sa账户或windows管理员账户连接数据库实例。在【对象资源管理器】窗格里选择【数据库实例名】--【mydb】数据库--【安全性】--【用户】选项。如图10.8所示(2)右击【用户】选项,在弹出的快捷菜单里选择【新建用户】选项,弹出图10.9所示的对话框。(3)在用户名输入框中输入一个新名称,点击【登录名】右边的浏览按钮,打开【选择登录名】窗口,如图10.10所示(4)在【选择登录名】窗口中,点击【浏览】按钮,找到在上面创建的登录用户“stu”并点击【确定】按钮。(5)回到【新建数据库用户】窗口中,点击【确定】,完成数据库新用户的添加。使用存储过程创建数据库用户可以使用存储过程sp_grantdbaccess为登录账户在当前数据库中添加一个数据库用户账户(安全账户),并使其能够被授予在当前数据库中执行活动的权限。其语法格式为:sp_grantdbaccess[@loginame=]'login'[,[@name_in_db=]'name_in_db'[OUTPUT]]【任务10.5】使用存储过程完成【任务10.4】的要求。可以在查询编辑器中执行下列语句:usemyDBgoEXECUTEsp_grantdbaccessstu','stu'修改数据库用户

修改数据库用户主要是修改为此用户所设置的用户权限,也就是修改该用户所属的数据库角色。使用SQLServerManagementStudio修改数据库用户(1)启动SQLServerManagementStudio,以sa账户或windows管理员账户连接数据库实例。在【对象资源管理器】窗格里选择【数据库实例名】--【mydb】数据库--【安全性】--【用户】选项。(2)右击欲修改的数据库用户名,选择【属性】选项,打开如图10.11所示的【数据库用户属性窗口】,根据需要对其进行修改即可。使用存储过程修改数据库用户通过T-SQL语句修改用户账户所属角色时,要用到以下两个系统存储过程:sp_addrolemember将数据库用户添加到一个数据库角色sp_droprolemember从一个数据库角色中删除一个用户账户它们的语法格式如下:sp_addrolemember[@rolename=]'role',[@membername=]'security_account'sp_droprolemember[@rolename=]'role',[@membername=]'security_account'【任务10.6】将“STU”添到数据库myDB的db_accessadmin角色中。可以在查询分析器中执行下列SQL语句:usemyDBEXECUTEsp_addrolemember'db_accessadmin','STU'EXECUTEsp_helpuser'STU'--查看用户STU的相关信息删除数据库用户删除数据库用户,就删除了一个登录账户在当前数据库中的映射,此登录账户将失去访问数据库的权限,但仍能登录SQLServer。使用SQLServerManagementStudio删除数据库用户(1)启动SQLServerManagementStudio,以sa账户或windows管理员账户连接数据库实例。在【对象资源管理器】窗格里选择【数据库实例名】--【mydb】数据库--【安全性】--【用户】选项。(2)右击欲删除的数据库用户名,选择【删除】选项,打开【删除对象】窗口,在该窗口中点击【确定】按钮即可。使用存储过程删除数据库用户可以使用存储过程sp_revokedbaccess从当前数据库中删除数据库用户账户。其语法格式如下:sp_revokedbaccess[@name_in_db=]'name'参数说明:[@name_in_db=]'name':是要删除的账户名称。账户名必须存在于当前数据库中。【任务10.7】从当前数据库myDB中删除用户账户STU。EXECUTEsp_revokedbaccess'STU'角色管理在SQLServer2008中,角色分为三种:服务器角色:是服务器级的一个对象,只能包含登录。分配了一定的服务器操作权限。数据库角色:是数据库级的一个对象,只能包含数据库用户而不能包含登录。分配了一定的数据库操作权限。应用程序角色:是一个数据库主体,能使应用程序能够用自身的、类似用户的特权来运行。使用应用程序角色可以只允许通过特定应用程序连接的用户访问特定数据。应用程序角色在默认情况下不包含任何成员,并且是非活动的。应用程序可以用存储过程sp_setapprole来激活应用程序角色。服务器角色在安装完SQLServer2008后,系统自动创建了8个固定的服务器角色,如图10.13所示。它们提供了服务器一级的管理权限集。注意:SQLServer不允许自定义服务器角色。服务器角色的应用使用SQLServerManagementStudio将登录用户加入到角色中【任务10.8】建立了一个登录名为myadmin的系统登录帐户,其身份认证模式为SQLServer身份认证模式。升级该账号的权限,让其拥有对系统的所有操作权。分析:在服务器固定角色中存在sysadmin角色,其可执行SQLServer系统中的任何任务,是SQLServer的管理员组。根据需求,可在该角色中添加成员myadmin即可。(1)启动SQLServerManagementStudio,以sa账户或windows管理员账户连接数据库实例。在【对象资源管理器】窗格里选择【数据库实例名】--【安全性】--【登录名】选项。(2)右击【登录名】,选择【新建登录名】选项,打开如图10.14所示的【新建】窗口,根据题目要求创建“myadmin”登录账户。(3)右击新创建的登录账户“myadmin”,在弹出的快捷菜单里选择【属性】选项,弹出【登录属性】对话框,在该对话框中打开【服务器角色】选项页。勾选“sysadmin”角色,单击【确定】按钮完成操作。如图10.15所示使用存储过程将登录用户加入到角色中可以使用存储过程sp_addsrvrolemember将一个已存在的登录账户成为固定服务器角色的成员。其语法格式如下:sp_addsrvrolemember[@loginame=]'login',[@rolename=]'role'【任务10.9】使用T-SQL语句解决【任务10.8】的问题可在查询编辑器中执行下列T-SQL语句:EXECUTEsp_addsrvrolemember'myadmin','sysadmin'使用SQLServerManagementStudio将登录用户从角色中删除【任务10.10】如因某种原因,登录名为myadmin的用户不应该再拥有管理《学生管理系统》所使用的SQLServer服务器的全部权限,但其仍能登录SQLServer服务器,应如何设置?分析:可以删除登录账户myadmin在固定服务器角色sysadmin中的映射,不能删除其登录账户,因为这样myadmin将不能登录SQLServer服务器。具体操作步骤如下:右击登录账户“myadmin”,在弹出的快捷菜单里选择【属性】选项,弹出【登录属性】对话框。在该对话框中打开【服务器角色】选项页。去掉勾选“sysadmin”角色,单击【确定】按钮完成操作。使用存储过程将登录用户从角色中删除从固定服务器角色中删除一个登录账户,可以使用存储过程sp_dropsrvrolemember。其语法格式:sp_dropsrvrolemember[@loginame=]'login',[@rolename=]'role'参数说明:[@loginame=]'login':将要从固定服务器角色删除的登录账户。[@rolename=]'role':有效的固定服务器角色的名称。

【任务10.11】使用T-SQL语句解决【任务10.10】的问题可以在查询编辑器中执行下列T-SQL语句,结果如图10.16所示EXECUTEsp_dropsrvrolemember'myadmin','sysadmin'数据库角色数据库角色由SQLServer在数据库级别定义,存在于每个数据库中。数据库角色分为固定数据库角色和自定义数据库角色两类。在安装完SQLServer后,系统也为每个数据库自动创建了9个固定的数据库角色。它们提供了数据库一级的管理权限集。使用SQLServerManagementStudio将数据库用户加入到数据库角色中【任务10.12】将上面的“myadmin”登录用户添加到“mydb”数据库用户中,如果他要对数据库myDB拥有任意操作权限,应如何设置?分析:数据库固定角色中存在db_owner,该角色的权限跨越所有其他固定数据库角色,只要把数据库用户“myadmin”添加到该角色中即可满足要求。(1)启动SQLServerManagementStudio,以sa账户或windows管理员账户连接数据库实例。在【对象资源管理器】窗格里选择【数据库实例名】--【数据库】--【mydb】--【安全性】--【用户】选项。(2)右击【用户】,选择【新建用户】选项,打开【新建】窗口,根据题目要求添加“myadmin”账户。在【数据库角色成员身份】选项中勾选【db_owner】角色,单击【确定】按钮完成操作。如图10.17所示使用存储过程将数据库用户加入到数据库角色中将当前数据库中已有数据库用户账户添加到数据库角色,可以使用存储过程sp_addrolemember。其语法格式如下:sp_addrolemember[@rolename=]'role',[@membername=]'security_account‘【任务10.13】使用T-SQL语句解决【任务10.12】的问题,可以在查询编辑器中执行下列T-SQL语句:EXECUTEsp_addrolemember'db_owner','myadmin'使用SQLServerManagementStudio将数据库用户从数据库角色中删除【任务10.14】“myadmin”账户因工作原因不应该再拥有对数据库myDB的全部操作权限,应如何设置?分析:在数据库myDB中,只要删除固定数据库角色db_owner内的成员“myadmin”即可。具体操作步骤如下:右击数据库账户“myadmin”,在弹出的快捷菜单里选择【属性】选项,弹出【数据库用户属性】对话框。在该对话框【数据库角色成员身份】选项中去掉勾选“db_owner”角色,单击【确定】按钮完成操作。使用存储过程将数据库用户从数据库角色中删除可以使用存储过程sp_droprolemember从当前数据库角色中删除数据库用户账户。其语法格式为:sp_droprolemember[@rolename=]'role',[@membername=]'security_account'参数说明:'role':即将删除成员的角色名称。'security_account':正在从角色中删除的数据库用户帐户的名称。【任务10.15】使用T-SQL语句解决【任务10.14】的问题,可以在查询编辑器中执行下列T-SQL语句:EXECUTEsp_droprolemember'db_owner','myadmin'自定义数据库角色使用SQLServerManagementStudio创建自定义数据库角色【任务10.16】如果《学生管理系统》的系统管理人员登录SQLServer服务器时需要对数据库myDB有一些特殊的访问要求,如何进行权限设置?具体操作步骤如下:(1)启动SQLServerManagementStudio,以sa账户或windows管理员账户连接数据库实例。在【对象资源管理器】窗格里选择【数据库实例名】--【数据库】--【mydb】--【安全性】--【角色】--【数据库角色】选项。(2)右击【数据库角色】,选择【新建数据库角色】选项,打开【新建】窗口,如图10.18所示。在该对话框的【角色名称】里输入新角色名称,在【所有者】里输入新角色的所有者,也可以选择新角色的所有者。使用存储过程创建自定义数据库角色在当前数据库创建新的角色,可以使用存储过程sp_addrole。其语法格式如下:sp_addrole[@rolename=]'role'[,[@ownername=]'owner']参数说明:[@rolename=]'role':新角色的名称。[@ownername=]'owner':新角色的所有者,其值必须是当前数据库中的某个用户或角色。【任务10.17】使用T-SQL语句解决【例10.16】中的问题可以在查询编辑器中执行下列T-SQL语句:EXECUTEsp_addrole'db_def_admin'删除自定义数据库角色在SQLServerManagementStudio中删除自定义数据库角色的方法与创建的方法十分类似,请大家自行操作。也可以使用存储过程sp_droprole从当前数据库删除角色,其语法格式如下:sp_droprole[@rolename=]'role'参数说明:[@rolename=]'role':将要从当前数据库中删除的角色的名称。【任务10.18】假设要删除自定义数据库角色db_def_admin,可以在查询编辑器中执行下列T-SQL语句:USEmyDBGOEXECUTEsp_droprole'db_def_admin'权限管理权限用来控制用户如何访问数据库对象,一个用户可以直接分配到权限,也可以作为一个角色中的成员间接得到权限。SQLServer中的权限分为三种:语句权限、对象权限、隐含权限。语句权限:是指是否可以执行一些数据定义语句。对象权限:是指用户对数据库中的表、存储过程、视图等对象的操作权限。权限存在的三种形式:授权、拒绝、剥夺权限管理形势权限描述授权GRANT能执行动作拒绝DENY不能执行动作剥夺REVOKE不能执行动作,除非是角色成员,且角色被授权。使用SQLServerManagementStudio设置数据库用户权限(1)启动SQLServerManagementStudio,以sa账户或windows管理员账户连接数据库实例。在【对象资源管理器】窗格里选择【数据库实例名】--【数据库】--【mydb】--【表】--【dbo.grade】选项。(2)右击【dbo.grade】,选择【属性】选项,打开【表属性】窗口,选择【权限】选项页如图10.19所示。(3)在【用户或角色】设置区,点击【搜索】按钮添加“stu”用户,在“stu的权限”设置区设置该用户的权限,设置完成后单击【确定】按钮。如图10.20所示使用T-SQL语句设置数据库用户权限在SQLServer中分别使用GRANT、REVOKE和DENY语句来授予权限、禁止权限和废除权限。其中GRANT和REVOKE语句的语法格式分别如下:GRANT<permission>on<object>TO<user>REVOKE<permission>on<object>TO<user>【任务10.20】使用T-SQL语句要实现【任务10.19】中的要求,可以在查询分析器中执行如下T-SQL语句:USEmyDBgoGRANTSELECTONdbo.gradeTOstuDENYINSERT,UPDATE,DELETEONdbo.gradeTOstu数据库的备份

备份和恢复组件是SQLServer2000的重要组成部分。备份就是指SQLServer2000数据库或事务日志进行拷贝,数据库备份记录了在进行备份这一操作时数据库中所有数据的状态,如果数据库因意外破坏而损坏,这些备份文件将在数据库恢复时用来恢复数据库。SQLServer支持的备份类型包括:(1)完整数据库备份。它备份包括事务日志的整个数据库。(2)差异数据库备份。在完整数据库备份之间执行差异数据库备份。(3)事务日志备份。日志备份序列提供了连续的事务信息链,可支持从数据库、差异或文件备份中快速恢复。(4)文件和文件组备份。当时间限制使得完整数据库备份不切实际时,请使用BACKUP备份数据库文件和文件组,而不是备份完整数据库。若要备份一个文件而不是整个数据库时,请合理安排步骤以确保数据库中所有的文件按规则备份,同时必须进行单独的事务日志备份。在恢复一个文件备份后,使用事务日志将文件内容前滚,使其与数据库其余部分一致。1).完全数据非常重要并且必须能够恢复到故障点。记录所有的数据修改。可使用SQLServer2000的所有恢复选项。2).大容量日志记录如有必要,可重播某些大容量操作(大容量复制操作、SELECTINTO、文本处理),因此不完全记录这些操作。只能恢复到上一次数据库或日志备份的末尾。3).简单自上次备份后所做的所有数据更改都是可替代的,或是可重做的。记录开销最小,但不能恢复自上次备份结束后的内容。数据库备份方式:备份设备使用SQLServerManagementStudio创建备份设备【任务10.21】使用SQLServerManagementStudio创建备份设备myDatabase_bak具体操作步骤如下:(1)启动SQLServerManagementStudio,在【对象资源管理器】窗格里选择【数据库实例名】--【服务器对象】--【备份设备】选项。(2)右击【备份设备】,选择【新建备份设备】选项,打开【新建】窗口,如图10.21所示。在【设备名称】里输入备份设备的名称,在【文本】里输入备份设备的路径和文件名。由此可见,SQLServer2008中的备份设备事实上只是一个文件而已。(3)单击【确定】按钮,完成设备的创建使用T-SQL语句创建备份设备在SQLServer中,可以使用sp_addumpdevice来创建备份设备。其语法格式如下:sp_addumpdevice[@devtype=]'device_type',[@logicalname=]'logical_name',[@physicalname=]'physical_name'[,{[@cntrltype=]controller_type|[@devstatus=]'device_status'}]【任务10.22】使用存储过程在当前的数据库服务器上添加一个逻辑名为“myDB_bak”的磁盘备份设备,其物理名称为“C:\myDB_bak.BAK”。execsp_addumpdevice'disk','myDB_bak','C:\myDB_bak.BAK'上述T-SQL语句的执行结果如图10.22所示。删除备份设备使用SQLServerManagementStudio删除备份设备的方法与创建的方法非常类似,请大家自行完成。使用存储过程sp_dropdevice可以删除备份设备。其语法格式如下:sp_dropdevice[@logicalname=]'device'[,[@delfile=]'delfile']【任务10.23】使用存储过程删除一个备份设备,在查询编辑器中执行如下T-SQL语句execsp_dropdevice'myDB_bak'使用SQLServerManagementStudio备份数据库【任务10.24】请将myDB数据库进行备份。具体操作步骤如下:(1)启动SQLServerManagementStudio,在【对象资源管理器】窗格里选择【数据库实例】--【数据库】--【mydb】选项。(2)右击myDB数据库,在弹出的菜单中选择【任务】--【备份】,弹出如图10.23所示的【备份数据库】对话框。(3)在图10.23所示的对话框中可以完成以下操作:选择要备份的数据库:在【数据库】下拉列表框里可以选择要备份的数据库名选择备份类型:备份类型包括“完整备份”、“差异备份”、“事务日志备份”以及“文件和文件组备份”四种。在【备份类型】下拉列表框里可以选择【完整】、【差异】、【事务日志】三种备份类型。如果要进行文件和文件组备份,则选中【文件和文件组】单选按钮,此时会弹出图10.24所示的【选择文件和文件组】对话框,在该对话框里可以选择要备份的文件和文件组,选择完毕后单击【确定】返回图10.23所示的对话框。设置备份集的信息:在【备份集】栏中可以设置备份集的信息,其中【名称】用于设置备份集的名字,【说明】用于输入对备份集的说明内容,在【备份集过期时间】区域可以设置本次备份在几天后过期或在哪一天过期。备份集过期后会被新的备份文件覆盖。数据库备份到哪里SQLServer2008可以将数据库备份到磁盘或磁带上,由于本例中所使用的计算机没有安装磁带机,所以【磁带】单选按钮是灰色的。将数据库备份到磁盘也有两种方式,一是文件方式,另一种是备份设备方式。单击【添加】按钮弹出图10.25所示的【选择备份目标】对话框,在该对话框里可以选择将数据库备份到文件还是备份设备上。在本例中选择前面创建的备份设备,选择完毕单击【确定】按钮,返回图10.23所示的对话框。(4)在图10.23所示的对话框中单击【选项】选项页,如图10.26所示,可以完成以下操作:使用T-SQL语句备份数据库完全备份数据库对数据库进行完全备份的BACKUP命令的语法格式如下:BACKUPDATABASE{database_name|@database_name_var}TO<backup_device>[,...n][WITHoptions]差异备份数据库从最近一次全库备份结束以来所有改变的数据备份到数据库。当数据库从上次备份以来,数据发生很少的变化时适合使用差异备份。此种备份使用BACKUP命令的语法格式如下:BACKUPDATABASE{database_name|@database_name_var}TO<backup_device>[,...n]WITHDIFFERENTIAL[options]事务日志备份从最近一次日志备份以来所有事务日志备份到备份设备。日志备份经常与全库备份和差异备份结合使用。此种备份使用BACKUP命令的语法格式如下:BACKUPLOG{database_name|@database_name_var}{TO<backup_device>[,...n][WITHoptions[[,]NO_TRUNCATE][[,]{NORECOVERY|STANDBY=undo_file_name}]}文件与文件组备份当一个数据库很大时,对整个数据库进行备份可能花费很多时间,此时可采用文件和文件组备份。此种备份使用BACKUP命令的语法格式如下:BACKUPDATABASE{database_name|@database_name_var}<file_or_filegroup>[,...n]TO<backup_device>[,...n][WITHoptions]其中语句<file_or_filegroup>的形式为:<file_or_filegroup>::={FILE={logical_file_name|@logical_file_name_var}|FILEGROUP={logical_filegroup_name|@logical_filegroup_name_var}}【任务10.25】使用BACKUP命令将数据库myDB整个备份到备份设备myDB_bak。USEmyDBgoBACKUPDATABASEmyDBTOmyDB_bakwithname='myDB080416'上述T-SQL语句的执行结果如图10.27所示。【任务10.26】在【任务10.25】的基础上,使用存储过程进行差异备份。BACKUPDATABASEmyDBTOmyDB_bakWITHDIFFERENTIAL,name='myDB差异备份',NOINIT上述T-SQL语句的执行结果如图10.28所示。【任务10.27】对数据库myDB进行事务日志备份。BACKUPLOGmyDBTOmyDB_bakWITHNOINIT【任务10.28】将数据库myDB的cnc_nk_data文件备份到本地磁盘设备myfileback。USEmyDBexecsp_addumpdevice'disk','myfilebackup','D:\DataBaseBak\mymyfilebackup.BAK'BACKUPDATABASEmyDBFILE='cnc_nk_data'TOmyfilebackup恢复数据库备份是一种灾害预防操作,恢复则是一种消除灾害的操作。备份是恢复的基础,恢复是为了实现备份的目的。数据库恢复就是指加载数据库备份到系统中的进程。在进行数据库恢复时,系统首先进行一些安全性检查,例如指定的数据库是否存在、数据库文件是否变化、数据库文件是否兼容,然后指定数据库及其相关的文件。之后针对不同的数据库备份类型,可以采取不同的数据库恢复方法。在SQLServer2008中可以为每一个数据库选择一个恢复模型。SQLServer2008支持的恢复模型有三种,分别是:简单恢复模型:允许将数据库恢复到最新的备份。完全恢复模型:允许将数据库恢复到故障点状态。大容量日志记录恢复模型:允许大容量日志记录操作。数据库恢复的策略使用SQLServerManagementStudio恢复数据库【任务10.29】在前面章节中,己经对myDB数据库进行了备份。那么我们可以在myDB中添加一些新的内容(比如添加表或视图、或对某个基本表的数据进行更新操作等),然后利用备份文件“myDB_bak.BAK”进行恢复,查看数据库的恢复效果。具体操作步骤如下:(1)启动SQLServerManagementStudio,右击要还原的数据库,在弹出的快捷菜单里选择【任务】--【还原】--【数据库】选项,弹出图10.29所示的【还原数据库】对话框。(2)根据还原要求,设置好相关参数之后,单击【确定】按钮即可完成数据库的还原操作。

(3)也可以在图10.29中打开【选项】选项页,如图10.30所示,使用T-SQL语句恢复数据库用户恢复整个数据库的RESTORE语句的语法格式如下:RESTOREDATABASE{database_name|@database_name_var}[FROM<backup_device>[,...n]][WITH[RESTRICTED_USER][[,]FILE={file_number|@file_number}][[,]PASSWORD={password|@password_variable}][[,]MEDIANAME={media_name|@media_name_variable}][[,]MEDIAPASSWORD={mediapassword|@mediapassword_variable}][[,]MOVE'logical_file_name'TO'operating_system_file_name'][,...n][[,]KEEP_REPLICATION][[,]{NORECOVERY|RECOVERY|STANDBY=undo_file_name}][[,]{NOREWIND|REWIND}][[,]{NOUNLOAD|UNLOAD}][[,]REPLACE][[,]RESTART][[,]STATS[=percentage]]]还原差异备份用户恢复部分数据库内容的RESTORE语句的语法格式如下:RESTOREDATABASE{database_name|@database_name_var}

<file_or_filegroup>[,...n][FROM<backup_device>[,...n]][WITH{PARTIAL}[[,]FILE={file_number|@file_number}][[,]PASSWORD={password|@password_variable}][[,]

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论