一、.mdf、.ndf和.ldf文件是什么
在微软的SQL Server 2000 数据库有三种类型的文件:
类型 | 缩写 | 中文意思 |
---|---|---|
mdf | primary data file | 主要数据文件 |
ndf | secondary data files | 次要数据文件 |
ldf | Log data files | 事务日志文件 |
1、主要数据文件:(扩展名.mdf是 primary data file 的缩写)
主要数据文件包含数据库的启动信息,并指向数据库中的其他文件。用户数据和对象可存储在此文件中,也可以存储在次要数据文件中。每个数据库有一个主要数据文件。
2、次要数据文件(扩展名.ndf是Secondary data files的缩写)
次要数据文件是可选的,由用户定义并存储用户数据。通过将每个文件放在不同的磁盘驱动器上,次要文件可用于将数据分散到多个磁盘上。另外,如果数据库超过了单个 Windows 文件的最大大小,可以使用次要数据文件,这样数据库就能继续增长。
3、事务日志 (扩展名.ldf是Log data files的缩写)
事务日志文件保存用于恢复数据库的日志信息。每个数据库必须至少有一个日志文件。
二、恢复数据
- 把mdf文件或.ndf文件和ldf文件拷贝到数据库的默认路径C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA里也可是自定义路径(这里是自定义路径演示)
- 在数据库可视化工具中新建查询运行以下代码既可既可产生名为cst的数据库
- 刷新数据库,就出现了新的数据库cst;
USE master;
GO
CREATE DATABASE cst
ON (FILENAME = 'D:\Program Files\MS_SQLSERVER_DATA\cst.ndf'),
(FILENAME = 'D:\Program Files\MS_SQLSERVER_DATA\cst_log.ldf')
FOR ATTACH;
GO
例如:
说明:
- 以上代码也可将.ndf文件替换为.mdf文件进行恢复。
- 在数据恢复后恢复文件将成数据库的引用文件,数据库的操作日志及数据都会在此进行保存,切记不可删除和移动。
三、遇到的问题
- 恢复文件后数据库状态是“只读”,不能写入
解决办法:将.mdf、.ndf和.ldf文件的权限改为完全控制,选中.ndf文件---->右击----->安全------> Authenticated Users---->编辑---->完全控制,按照同样的方法,更改日志文件。
如果不行则将数据库分离处理,然后在将.mdf、.ndf和.ldf文件的权限改为完全控制,然后重新执行上面sql语句恢复数据。
分离步骤:打开Microsoft SQL Server Management Studio管理工具,右键你要压缩的数据库 -> 任务 -> 分离 -> 勾选删除连接、更新统计信息的框框->点击确定即可