分类: 数据库开发技术
2008-06-09 12:38:18
SQLServer数据库的备份和还原详解- - |
1. 基本概念: mdf文件:SqlServer数据库的主数据文件 ldf文件:SqlServer数据库的日志文件 SQL Server管理的每个数据库都对应一个mdf文件和一个ldf文件。当SQL Server服务处于开启时,这些文件是无法删除的。 用SQL Server 企业管理器,单击某个数据库,选择右键菜单中的“属性",从弹出对话框的“数据文件”和“事务日志”标签页中可以查看这个数据库对应的mdf文件路径和ldf文件路径。 2. 用SQL Server 企业管理器备份和还原数据库: 例如,备份数据库到可移动存储介质,然后还原到另一台机器上,步骤如下: 备份: 单击要备份的数据库,从右键菜单选择“所有任务->备份数据库”。 选择“完全备份”,删除“备份到”列表框中的现有内容,然后“添加”;弹出“选择备份目的”对话框,“文件名”就是你要得到的备份文件的存放路径。选好后确定,这时“备份到”列表框中出现你选择的目的文件路径。 因为没有重名文件,“追加”或“重写”选项的效果是一样的,不用管。选中它,确定,等待备份完成。完成后在你指定的路径下将看到你备份的文件,注意该文件默认没有后缀名。 备份文件还有很大的压缩空间,一般一个40多M的备份文件用winRAR压缩后只有4M左右,作为邮箱附件也没有问题。 还原: 将备份文件放到一个便于管理的文件夹下,例如你的数据库叫“test”,可以建立一个叫“e:\db_bak\test\”的文件夹。 从SQL Server 企业管理器单击“数据库”,选择“新建数据库...”,起名“test”,确定。看到该数据库出现在数据库列表中,里面只有一些系统tables。注意新建数据库默认的mdf文件和ldf文件都会被放在SQL Server安装目录下的子目录“MSSQL\data\”中,文件名与数据库名称相同。 单击该数据库,从右键列表中选择“所有任务->还原数据库”。弹出“还原数据库”对话框。 选择还原方式:“从设备”,单击“选择设备”弹出“选择还原设备”对话框。选择“还原自磁盘”。“添加...”,“文件名”中填入你的备份文件路径,例如“e:\db_bak\test\test”,确定。 回到“还原数据库”对话框后,在“选项”中勾选“在现有数据库上强制还原”(因为要改变“新建数据库”时默认创建的mdf文件和ldf文件)。然后在下面“移至物理文件名”栏中填写你想将该数据库的mdf文件和ldf文件的保存路径。注意如果路径不存在或者与已有文件名冲突,后面的备份过程中将报错。为了便于管理,建议将mdf和ldf文件的路径设置为和备份文件一致,例如“e:\db_bak\test\test_data.mdf”和“e:\db_bak\test\test_log.ldf”。 确认,开始还原。还原结束后刷新该数据库的tables列表,将看到和备份数据库一样的结构和数据,说明还原成功! 这时查看数据库属性,可以看到mdf文件和ldf文件都换成了你设置的文件路径。原来的mdf和ldf文件同时被物理删除。 3. 用mdf文件和ldf文件还原数据库 如果你有原数据库的mdf和ldf文件,可采用如下办法还原: 在SQL Server 企业管理器中单击数据库,从右键菜单选择“所有任务->附加数据库”。 在弹出的对话框中指定mdf文件路径,显示验证通过,确定,一切OK! 注意用这种方法要求两个文件缺一不可,文件名不曾改变,并且要在同一目录下,否则验证通不过。 4. 用mdf文件还原数据库 步骤如下: 1、新建一个同名数据库。随便取个名字也行,例如new。 2、修改服务器设置:在“SQL Server 属性(配置)”对话框的“服务器设置”tab中,允许多系统目录进行直接修改(否则第6步不能执行) 3、停止SQL Server(否则无法替换mdf文件) 4、用原mdf文件覆盖新建库的数据库文件,同时删除ldf文件。 例如原mdf文件叫做“old_data.mdf”,那么先删除new_data.mdf和new_log.ldf;然后将old_data.mdf文件拷贝到该目录下;再将old_data.mdf 改名为 new_data.mdf 。 5、重启SQL Server(这时数据库应该是“置疑”) 6、将数据库置为紧急状态:update master.dbo.sysdatabases set status = 32768 where name = dbname 7、重建日志:dbcc rebulid_log('dbname', 'logfile') (可能不需要这一步。) 8、数据库重新启动(这是数据库应该是“紧急状态”),然后再还原数据库状态用以下语句 update master.dbo.sysdatabases set status = 16 where name = dbname 如果数据库对应的mdf和ldf文件丢失,在企业管理器中整个服务器会显示“无项目”。 将mdf文件拷贝到原目录下,但没有ldf文件,在企业管理器中该数据库会显示“置疑“。 |