恢复只有MDF文件的MS SQL数据库.从 SQL Server 7.0 或 SQL Server 2000 恢复或升级到更高版本。如果你的SQL数据库,只保留有 * .mdf文件,怎么恢复呢?下面的两个方法帮你解决这个难题.writer:furenjun 2007.11 . 13 方法一 ================================================= 在 SQL Server 2005 中,通过使用"分离和附加操作"将用户数据库(只有一个 * .mdf文件或两个文件都存在) 从 SQL Server 7.0 或 SQL Server 2000 升级到更高版本。也实现了只有一个 * .mdf文件附加 / 还原成功的目的. 哈哈,不错吧.步骤还挺简单的.操作步骤: 1 .将复制的 CarDriManage 数据库和(可选的)日志文件附加到 SQL Server 2005 的实例(此示例使用了相同的数据库名称)。 2 .在 SQL Server Management Studio 中,打开新的查询编辑器查询并连接到要附加该数据库的服务器实例。 3 .执行以下 CREATE DATABASE 语句: 复制代码 USE master; GO CREATE DATABASE [ CarDriManage ] ON PRIMARY (FILENAME = ' D:\MSSQL\DATA\CarDriManage.mdf ' ) FOR ATTACH; GO -- 如果两个文件都存在,则执行下面的代码. USE master; GO CREATE DATABASE pubs ON PRIMARY FILENAME = ' D:\MSSQL\DATA\CarDriManage.mdf ' ) LOG ON (FILENAME = ' D:\MSSQL\DATA\CarDriManage_log.LDF ' ) FOR ATTACH; GO *** 注意: *** 在 SQL Server Management Studio 中,新附加的数据库在对象资源管理器中不是立即可见的。若要查看数据库,请单击“对象资源管理器”窗口,并选择“视图” > “刷新”。如果展开“数据库”节点,新附加的数据库现在就会显示在数据库列表中。 -- 下面是执行后的报告(没有CarDriManage_log.LDF文件) -- 相信你看到下面的消息也会很高兴,失而复得啊! 文件激活失败。物理文件名称 ' C:\Program Files\Microsoft SQL Server\MSSQL\data\CarDriManage_log.LDF ' 可能不正确。新的日志文件 ' D:\MSSQL\DATA\CarDriManage_log.LDF ' 已创建。正在将数据库 ' CarDriManage ' 从版本 539 转换为当前版本 611 。数据库 ' CarDriManage ' 正在从版本 539 升级到版本 551 。数据库 ' CarDriManage ' 正在从版本 551 升级到版本 552 。数据库 ' CarDriManage ' 正在从版本 552 升级到版本 553 。数据库 ' CarDriManage ' 正在从版本 553 升级到版本 554 。数据库 ' CarDriManage ' 正在从版本 554 升级到版本 589 。数据库 ' CarDriManage ' 正在从版本 589 升级到版本 590 。数据库 ' CarDriManage ' 正在从版本 590 升级到版本 593 。数据库 ' CarDriManage ' 正在从版本 593 升级到版本 597 。数据库 ' CarDriManage ' 正在从版本 597 升级到版本 604 。数据库 ' CarDriManage ' 正在从版本 604 升级到版本 605 。数据库 ' CarDriManage ' 正在从版本 605 升级到版本 606 。数据库 ' CarDriManage ' 正在从版本 606 升级到版本 607 。数据库 ' CarDriManage ' 正在从版本 607 升级到版本 608 。数据库 ' CarDriManage ' 正在从版本 608 升级到版本 609 。数据库 ' CarDriManage ' 正在从版本 609 升级到版本 610 。数据库 ' CarDriManage ' 正在从版本 610 升级到版本 611 。更为详细的介绍就参见: ==================== SQL Server 2005 联机丛书 如何使用分离和附加来升级数据库 (Transact - SQL) ms - help: // MS.SQLCC.v9 / MS.SQLSVR.v9.zh - CHS / udb9 / html / 99f66ed9 - 3a75 - 4e38 - ad7d - 6c27cc3529a9.htm方法二: ============================================================= 使用系统存储过程 (Transact - SQL) 之 数据库引擎存储过程 (Transact - SQL) sp_attach_single_file_db -- 使用示例 -- 将"D:\MSSQL\DATA\database.mdf" 这个数据库文件,附加至sql2005数据库中, -- 附加的新数据库名为:DataBase2 USE master; GO EXEC sp_detach_db @dbname = ' DataBase2 ' ; EXEC sp_attach_single_file_db @dbname = ' DataBase2 ' , @physname = N ' D:\MSSQL\DATA\database.mdf ' ; go =================== 消息 15010 ,级别 16 ,状态 1 ,过程 sp_detach_db,第 34 行数据库 ' DataBase2 ' 不存在。请使用 sp_helpdb 来显示可用的数据库。文件激活失败。物理文件名称 ' C:\DotNetNuke_Build\Website\App_Data\Database2_log.ldf ' 可能不正确。新的日志文件 ' D:\MSSQL\DATA\DataBase2_log.LDF ' 已创建。 =========================== 请注意(摘自sql2005帮助文档) =========================== 将只有一个数据文件的数据库附加到当前服务器。sp_attach_single_file_db 不能用于多个数据文件。重要事项: ======== 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并应着手修改当前还在使用该功能的应用程序。,我们建议您改用 CREATE DATABASE database_name FOR ATTACH。有关详细信息,请参阅 CREATE DATABASE (Transact - SQL)。不要针对复制数据库使用此过程。语法: ==== sp_attach_single_file_db [ @dbname= ] ' dbname ' , [ @physname= ] ' physical_name ' =========== 附常规附加数据库方法(有 * .mdf 和 * _ log .ldf两个文件) =============== 1 .在 SQL Server Management Studio 对象资源管理器中,连接到 Microsoft SQL Server 数据库引擎,然后展开该实例。 2 .右键单击“数据库”,指向“任务”,然后单击“附加”。将显示“附加数据库”对话框。 3 .若要指定要附加的数据库,请单击“添加”,然后在“定位数据库文件”对话框中选择该数据库所在的磁盘驱动器,展开目录树以查找和选择该数据库的 .mdf 文件;例如: C:\Program Files\Microsoft SQL Server\MSSQL. 1 \MSSQL\DATA\AdventureWorks_Data.mdf *** 重要事项: *** 本示例假设 AdventureWorks 数据库以前已分离。有关分离数据库的信息,请参阅如何分离数据库 (SQL Server Management Studio)。 4 .或者,若要指定以其他名称附加数据库,请在“附加数据库”对话框的“附加为”列中输入名称。 5 .或者,通过在“所有者”列中选择其他项来更改数据库的所有者。 6 .准备好附加数据库后,单击“确定”。 *** 注意: *** 新附加的数据库在视图刷新后才会显示在对象资源管理器的“数据库”节点中。若要随时刷新视图,请在对象资源管理器中单击,再单击“视图”菜单中的“刷新”。