恢复只有MDF文件的MS SQL数据库

 

恢复只有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 .准备好附加数据库后,单击“确定”。

*** 注意: ***
   新附加的数据库在视图刷新后才会显示在对象资源管理器的“数据库”节点中。若要随时刷新视图,请在对象资源管理器中单击,再单击“视图”菜单中的“刷新”。 
 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值