当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 如何恢复/修复MS SQL数据库的MDF文件

MSSQL
一个分页存储过程代码
Sql Server 2000 行转列的实现(横排)
sql2000挂起无法安装的问题的解决方法
完美解决MSSQL"以前的某个程序安装已在安装计算机上创建挂起的文件操作"
SQL Server数据库的修复SQL语句
分页存储过程代码
批量执行sql语句的方法
一条SQL语句搞定Sql2000 分页
SQL Server 海量数据导入的最快方法
SQL Select语句完整的执行顺序
MSSQL 清空数据库的方法
mssql自动备份及自动清除日志文件服务器设置
Sql 语句学习指南
.NET Framework SQL Server 数据提供程序连接池
对有自增长字段的表导入数据注意事项
SQL Server导入、导出、备份数据方法
sql server 临时表 查找并删除的实现代码
该行已经属于另一个表 的解决方法
SQL 注入式攻击的本质
SQL 平均数统计

MSSQL 中的 如何恢复/修复MS SQL数据库的MDF文件


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 104 ::
收藏到网摘: n/a

如果备份的数据库有2个文件,分别是.LDF 和 .MDF,打开企业管理器,在实例上右击---所有任务--附加数据库,然后选择那个.MDF文件,就可以了。

  或者在查询分析器中输入:

  sp_attach_db "数据库名称","路径\文件名.ldf","路径\文件名.MDF"

  SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式。下面将主要讨论一下后者的备份与恢复。本文假定您能熟练使用SQL Server Enterprise Manager(SQL Server企业管理器)和SQL Server Quwey Analyser(SQL Server查询分析器)

  1、正常的备份、恢复方式

  正常方式下,我们要备份一个数据库,首先要先将该数据库从运行的数据服务器中断开,或者停掉整个数据库服务器,然后复制文件。

  卸下数据库的命令:Sp_detach_db 数据库名

  连接数据库的命令:Sp_attach_db或者sp_attach_single_file_db

  s_attach_db [@dbname =] 'dbname', [@filename1 =] 'filename_n' [,...16]

  sp_attach_single_file_db [@dbname =] 'dbname', [@physname =] 'physical_name'

  使用此方法可以正确恢复SQL Sever7.0和SQL Server 2000的数据库文件,要点是备份的时候一定要将mdf和ldf两个文件都备份下来,mdf文件是数据库数据文件,ldf是数据库日志文件。

  例子:

  假设数据库为test,其数据文件为test_data.mdf,日志文件为test_log.ldf。下面我们讨论一下如何备份、恢复该数据库。

  卸下数据库:sp_detach_db 'test'

  连接数据库:sp_attach_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf'

  sp_attach_single_file_db 'test','C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data.mdf'

  // 本文转自 C++Builder 研究 - http://www.ccrun.com/article.asp?i=986&d=oxit07

  2、只有mdf文件的恢复技术

  由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。

  如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息

  设备激活错误。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有误。

  已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log.LDF' 的新日志文件。

  但是,如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也许上述办法就行不通了。你也许会得到类似下面的错误信息

  服务器: 消息 1813,级别 16,状态 2,行 1

  未能打开新数据库 'test'。CREATE DATABASE 将终止。

  设备激活错误。物理文件名 'd:\test_log.LDF' 可能有误。