CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

只有*.mdf文件没有了*.ldf文件如何还原SQL库,急

楼主a791223()2002-07-27 09:49:31 在 MS-SQL Server / 基础类 提问

有什么方法吗,  
   
  "附加数据库"时提示无"*.ldf"文件,用同数据库名的*.ldf文件代替也不行.  
   
  急 问题点数:100、回复次数:28Top

1 楼duckcn(duck)回复于 2002-07-27 10:05:02 得分 20

sp_attach_single_file_db  
  将只有一个数据文件的数据库附加到当前服务器。  
   
  语法  
  sp_attach_single_file_db   [   @dbname   =   ]   'dbname'  
          ,   [   @physname   =   ]   'physical_name'  
   
   
  如  
   
  EXEC   sp_attach_single_file_db   @dbname   =   'pubs',    
        @physname   =   'c:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\pubs.mdf'  
   
  Top

2 楼a791223()回复于 2002-07-27 10:22:56 得分 0

出现以下提示  
   
  服务器:   消息   1813,级别   16,状态   2,行   1  
  未能打开新数据库   'linjudy'。CREATE   DATABASE   将终止。  
  设备激活错误。物理文件名   'E:\MSSQL7database\data\linjudy_Log.LDF'   可能有误。  
  -----  
  好像还是要ldf文件Top

3 楼duckcn(duck)回复于 2002-07-27 10:26:48 得分 0

'E:\MSSQL7database\data\linjudy_Log.LDF'   在你的磁盘上是否存在,存在的话,把文件linjudy_Log.LDF移走。Top

4 楼a791223()回复于 2002-07-27 10:39:57 得分 0

就是因为没有linjudy_Log.LDF才无法恢复,原来这个数据库不在我的机器上的我只得到了mdf文件,想通过SQL2000的附加数据库进行恢复但提示需要ldf文件所以才想如何不需要ldf文件进行恢复Top

5 楼a791223()回复于 2002-07-27 10:48:59 得分 0

我的QQ:94548076  
  msn:abc791223@hotmail.com  
   
  可开贴在加分Top

6 楼duckcn(duck)回复于 2002-07-27 10:57:06 得分 0

看一下  
  http://www.csdn.net/expert/topic/882/882761.xml?temp=.519253Top

7 楼xiaowangzi(小汪仔)回复于 2002-07-27 11:11:31 得分 0

企业管理器——所有任务——附加数据库Top

8 楼a791223()回复于 2002-07-27 12:28:54 得分 0

我已经新建linjudy数据库,  
  并且先运行  
  EXEC   sp_detach_db   @dbname   =   'linjudy'  
   
   
  并且删除了linjudy.ldf文件  
   
   
  在运行  
  EXEC   sp_attach_single_file_db   @dbname   =   'linjudy',    
        @physname   =   'e:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\linjudy.mdf'  
   
   
  还是提示'E:\MSSQL7database\data\linjudy_Log.LDF'   在你的磁盘上是否存在,存在的话,把文件linjudy_Log.LDF移走。  
   
  各位救急呀  
   
  Top

9 楼duckcn(duck)回复于 2002-07-27 12:36:39 得分 0

不用先新建linjudy数据库。Top

10 楼a791223()回复于 2002-07-27 12:46:35 得分 0

你是说直接  
  EXEC   sp_attach_single_file_db   @dbname   =   'linjudy',    
        @physname   =   'e:\Program   Files\Microsoft   SQL   Server\MSSQL\Data\linjudy.mdf  
   
  一样的出错提示,你有QQ吗Top

11 楼a791223()回复于 2002-07-27 12:52:40 得分 0

这和附加数据库是不是一样的意思,是不是因为我的sql安装盘符与原来的不一样造成的Top

12 楼skyword(网络新丁)回复于 2002-07-27 12:57:59 得分 0

我的做法一般都没有用LDF,只用MDF,而且都正常追加进了数据库。  
  exec   sp_attach_db   @dbname   =   'xxx',  
  @filename1='*.mdf',  
   
  use   xxx,  
  exec   sp_updatestatsTop

13 楼a791223()回复于 2002-07-27 13:12:27 得分 0

E:\MSSQL7database\data\linjudy_Log.LDF(有可能原mdf文件是在这一路径上而我sql不是安装这一盘符上造成)Top

14 楼skyword(网络新丁)回复于 2002-07-27 13:53:00 得分 0

LDF文件可以在MDF建立的时候重建Top

15 楼a791223()回复于 2002-07-27 18:45:18 得分 0

附加数据库时总是提示  
  服务器:   消息   1813,级别   16,状态   2,行   1  
  未能打开新数据库   'linjudy'。CREATE   DATABASE   将终止。  
  设备激活错误。物理文件名   'E:\MSSQL7database\data\linjudy_Log.LDF'   可能有误。  
  -----  
   
  linjudy.mdf文件难道有问题,救命呀,  
   
  我新建了一个linjudy数据库,在覆盖了mdf文件出现"置疑"问题在用附加数据库的方法还是出现以上提示,  
   
  以上提示是什么含义呀,Top

16 楼lgh21cn(天马行空)回复于 2002-07-27 20:36:44 得分 80

这个问题前段我也遇见过,使用了上面各位仁兄介绍的方法根本没有用。后来我采取的办法是:  
  Use   Master  
  Go  
  sp_configure   'allow   updates',   1  
  reconfigure   with   override  
  Go  
  然后  
  update   sysdatabases   set   status   =   32768   where   name   =   '<db_name>'  
  现在,重新建立一个log文件(我试过但无法成功,不知高手有何方法)。  
   
  先把SQL   Server   重新启动一下,然后检查你的数据库吧。  
  先设置成单用户模式,然后做dbcc  
  sp_dboption   '<db_name>',   'single   user',   'true'  
  DBCC   CHECKDB('<db_name>')  
  把数据库状态改回去了,记得别忘了把系统表的修改选项关掉。  
  update   sysdatabases   set   status   =   28   where   name   =   '<db_name>'   --当然你的数据库状态可能不是这个,自己改为合适的值吧。也可以用sp_resetstatus  
  go  
  sp_configure   'allow   updates',   0  
  reconfigure   with   override  
   
  如果无法成功创建日志文件,也没有关系,使用以上方法后,看是否已恢复数据库,应该能成功的。关闭SQL   SERVER,然后重启,观察一下数据库状态是否正常,如果正常,一切万事大吉,如果数据库处于置疑状态。重新上面的步骤,注意将数据库名称更改为其他名字,恢复后不要关闭SQL   SERVER,然后新建一个与原来数据库名称一样的数据库,然后耐心的将恢复得到的数据库中所有的表、视图、函数、存储过程(不包括系统内部的),复制到新建的数据库,要有耐心,特别要注意有相关性的表、视图、函数、存储过程等的复制先后次序,否则会复制失败的。  
      上面的方法是万不得已才使用的。我在恢复公司内的数据库时,最后就是采用这种方法才最后成功的。希望对你有所帮助。  
  Top

17 楼a791223()回复于 2002-07-29 00:08:07 得分 0

我的这个mdf文件是另一台机器上的,  
   
  数据库名为linjudy  
   
  我先新建了linjudy数据库/将sql停止后覆盖了mdf文件并删除了ldf文件再使用如下方法操作  
  Use   Master  
  Go  
  sp_configure   'allow   updates',   1  
  reconfigure   with   override  
  Go  
   
  update   sysdatabases   set   status   =   32768   where   name   =   'linjudy'  
   
  重启sql后在运行  
  sp_dboption   'linjudy',   'single   user',   'true'  
  DBCC   CHECKDB('linjudy')  
   
  update   sysdatabases   set   status   =   28   where   name   =   'linjudy'  
   
   
  go  
  sp_configure   'allow   updates',   0  
  reconfigure   with   override  
   
  在重启sql后数据库状态为"置疑"  
   
  我因如何做呀,我急死了,QQ:116799879   MSN:abc791223@hotmail.com   所有可用分相送700分。  
  Top

18 楼a791223()回复于 2002-07-29 10:05:23 得分 0

急Top

19 楼a791223()回复于 2002-07-30 06:55:30 得分 0

请大家帮助Top

20 楼sky_blue(蓝天2007)回复于 2002-07-30 08:53:04 得分 0

找卖火柴的......Top

21 楼satan_m(伤心小箭)回复于 2002-07-30 16:46:15 得分 0

sp_attach_db   'linjudy','E:\MSSQL7database\data\linjudy_data.MDF'    
  Top

22 楼satan_m(伤心小箭)回复于 2002-07-30 16:48:48 得分 0

执行以上命令,mssqlserver会自动生成log文件Top

23 楼lgh21cn(天马行空)回复于 2002-07-30 19:51:36 得分 0

我在上面已经讲过,如果重启后数据库状态为"置疑",可以重新运用你上面恢复数据库的办法,要使用其他的数据库名称,使数据库处于紧急处理状态(32768   )。然后,不要重启,新建一个数据库,名称是你原来的数据库名(linjudy)。最后,通过导入数据(在新数据库上)或导出数据(在恢复的数据库上)功能,进行两个数据库的数据复制,可以一次进行多个数据和视图的导入或导出,但要注意相关联的表或视图导入或导出的先后次序,否则会出错的。如果不知道哪些表或视图有关联,可以一部分一部分的进行,如果出错就缩小进行的范围,要有耐心。导入或导出函数和存储过程时,要选择导入或导出方法的第三项,在下一步,特别要注意不要选择相关性,否则很容易导致错误,你也应一部分一部分的进行,不要一次全部完成。我想这样一定可以解决你的问题的,这是我的亲身体验。Top

24 楼a791223()回复于 2002-07-31 07:59:50 得分 0

我在用以上方法建立的数据库提示"置疑/紧急状态"没有办法导入导出Top

25 楼a791223()回复于 2002-07-31 08:03:33 得分 0

是否两台机器的sql安装目录要一样Top

26 楼duckcn(duck)回复于 2002-07-31 08:10:54 得分 0

sp_resetstatus   关闭数据库的置疑标志,但是原封不动地保持数据库的其它选项。  
   
  注意     只有在您的主要支持提供者指导下或有疑难解答建议的做法时,才可以使用   sp_resetstatus。否则,可能会损坏数据库。  
   
   
  由于该过程修改了系统表,系统管理员必须在创建这个过程前,启用系统表更新。要启用更新,使用下面的过程:  
   
  USE   master  
  GO  
  sp_configure   'allow   updates',   1  
  GO  
  RECONFIGURE   WITH   OVERRIDE  
  GO  
   
  过程创建后,立即禁用系统表更新:  
   
  sp_configure   'allow   updates',   0  
  GO  
  RECONFIGURE   WITH   OVERRIDE  
  GO  
   
  只有系统管理员才能执行   sp_resetstatus。执行该过程后,立即关闭   SQL   Server。  
   
  语法为:  
   
  sp_resetstatus   database_name  
   
  下面的例子将关闭   PRODUCTION   数据库的置疑标志。  
   
  sp_resetstatus   PRODUCTION  
   
  下面是结果集:  
   
  Database   'PRODUCTION'   status   reset!  
  WARNING:   You   must   reboot   SQL   Server   prior   to   accessing   this   database!  
   
  Top

27 楼dayn9(无知者无罪)回复于 2002-07-31 10:18:58 得分 0

在这种情况下确实存在直接attach的情况,7。0我遇到过。不过现在还不清楚原因,很可能和版本有关,比如Desktop版很可能可以。  
   
  关于这个问题哪位高手指点一下。Top

28 楼a791223()回复于 2002-07-31 15:11:58 得分 0

各位问题解决了,我再次用了"天马行空"网友的方法,  
   
  我先新建了linjudy数据库/将sql停止后覆盖了mdf文件并删除了ldf文件再使用如下方法操作  
  Use   Master  
  Go  
  sp_configure   'allow   updates',   1  
  reconfigure   with   override  
  Go  
   
  update   sysdatabases   set   status   =   32768   where   name   =   'linjudy'  
   
  重启sql后在运行,发现linjudy数据库可以正常打开了,立即查看原有的数据有了,在新建了数据库导出所有表,成功。  
  重启sql后linjudy库变为"紧急状态"但可以通过“导出数据”导出数据至其它数据库。  
   
  至此数据恢复成功,数据是否可以用我没有试。  
  以后大家恢复时可以用"天马行空"网友的方法,并且在重启sql时可以看一下恢复库的状态如果是"紧急状态"可以通过导出数据导出至其它数据库。  
   
  谢谢“天马行空”,谢谢大家的帮助  
  Top

相关问题

  • 根据数据库文件(.mdf)(.ldf)还原数据库的问题?
  • 数据库MDF文件被删除,还剩一个LDF文件,能还原吗
  • 使用SQLDMO还原数据库时,如何更改MDF和LDF的物理文件路径?
  • 请教两个问题:1.请问MDF和LDF文件如何还原为数据库实例? 2. ...
  • 请问:如何将*.MDF *.LDF 添加到SQL Server中?
  • SQL Server 7.0中 .MDF 和 .LDF 的文件格式有谁知道?
  • 如何把SQL的.MDF和.LDF文件加入到数据库
  • sql备份还原问题?
  • sql server的备份还原
  • SQL还原备份问题

关键词

  • 数据库
  • 文件
  • 视图
  • mssql
  • 数据
  • 函数
  • linjudy
  • ldf
  • 导出
  • mdf

得分解答快速导航

  • 帖主:a791223
  • duckcn
  • lgh21cn

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo