首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在SQL Server2005中从MDF恢复数据库?

如何在SQL Server2005中从MDF恢复数据库?
EN

Stack Overflow用户
提问于 2009-04-21 15:07:32
回答 7查看 75.9K关注 0票数 15

对于在MS SQL Server2005中创建的数据库,我有一个MDF文件,但没有LDF文件。当我尝试将MDF文件附加到其他SQL Server时,收到以下错误消息。

The log cannot be rebuilt because there were open transactions/users when the database was shutdown, no checkpoint occurred to the database, or the database was read-only. This error could occur if the transaction log file was manually deleted or lost due to a hardware or environment failure.

我希望完成以下任一选项:

  1. 附加数据库而不丢失数据(不太可能,但会为我节省一些时间)。
  2. 附加丢失数据的数据库(任何打开的事务都会丢失)。
  3. 仅从MDF文件恢复架构(无数据)。

我可以尝试哪些SQL命令来让我的数据库再次运行?

EN

回答 7

Stack Overflow用户

发布于 2013-05-28 17:33:02

下面的详细信息涵盖了第2部分和第3部分,以防重新创建日志不起作用,如果MDF文件被损坏,就会发生这种情况。

你只能通过一些第三方工具读取MDF文件来恢复数据和结构,这些工具可以对写成二进制数据的内容进行解码,但即使使用这样的工具,你也不能总是完全完成这项工作。

在这种情况下,您可以尝试使用ApexSQL Recover。据我所知,这是唯一可以做这种工作的工具,但它相当昂贵。

更好的办法是尝试从任何旧备份中恢复这些备份。

票数 11
EN

Stack Overflow用户

发布于 2009-04-21 15:11:21

来自SQL Server论坛Attaching MDF without LDF上的帖子

如果要连接不带LDF的MDF,可以按照以下步骤进行操作,它已经过测试,工作正常

  1. 创建具有相同名称和相同MDF和LDF文件的新数据库
  2. 停止sql server,将现有MDF重命名为新数据库,然后将原始MDF复制到此位置并删除LDF文件。
  3. 启动SQL
  4. 现在,您的数据库将标记为可疑5。更新sysdatabase以更新到紧急模式。这将不会在start up

中使用日志文件

Sp_configure“允许更新”,1 go Reconfigure with override GO更新系统数据库set status = 32768 where name = "BadDbName“go Sp_configure "allow updates",0 go Reconfigure with override GO

  1. 重新启动sql server。现在,数据库将处于紧急模式
  2. 现在执行未记录的DBCC以创建日志文件

DBCC REBUILD_LOG(dbname,'c:\dbname.ldf') --未记录的创建新日志文件的步骤。

(根据您的要求替换dbname和log文件名)

  1. 执行sp_resetstatus
  2. 重新启动SQL server并查看数据库是否联机。

更新: DBCC REBUILD_LOG不存在SQL2005及更高版本。这应该是可行的:

代码语言:javascript
复制
USE [master]
GO
CREATE DATABASE [Test] ON 
    (FILENAME = N'C:\MSSQL\Data\Test.mdf')
    FOR ATTACH_REBUILD_LOG
GO
票数 9
EN

Stack Overflow用户

发布于 2009-04-22 03:05:39

您是否尝试过忽略ldf而只连接mdf:

sp_attach_single_file_db @dbname = 'dbname‘,@physname = 'physical_name’

我不知道您打开的事务(可能只是丢失)会发生什么,但它可能会让您的数据恢复在线。

-don

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/773059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档