从恢复中打开 SQL Server .mdf 和 .ldf 文件

Posted

技术标签:

【中文标题】从恢复中打开 SQL Server .mdf 和 .ldf 文件【英文标题】:Open SQL Server .mdf and .ldf files from recovery 【发布时间】:2017-09-15 19:33:44 【问题描述】:

最近我在一个远程服务器上遇到了一个问题,该服务器包含一个正在运行的小型 SQL Server。

我使用PhotoRec 7.0 恢复所有文件,包括文件 mdf 和 ldf,但现在我在名称和文件之间没有任何关系。请参阅下面的示例:

我无法在 SQL Server Studio 上附加 mdf 文件,因为同一文件夹中没有同名的 ldf 文件。

我使用第三方工具打开 mdf 文件,我可以看到这些文件上的内容,但检查 ldf 没有运气。

对关系 mdf 文件及其各自的 ldf 有什么想法吗?或者省略 ldf 文件以便在 SQL Server Studio 中导入 mdf 文件的方法?

【问题讨论】:

您应该备份数据库并存储这些备份,不要触摸 .mdf 和 .ldf 文件。尝试从这里开始:docs.microsoft.com/en-us/sql/relational-databases/… 这次灾难恢复之后的下一步是设置一个真正的备份方案。备份文件可能不一致。 @MikhailLobanov 你没事。我保证备份已经设置好了。 【参考方案1】:

以下是步骤顺序,您必须注意,this database may not be transactionally consistent.

以下是如何让您的数据库恢复在线的步骤

1.创建一个同名的数据库(比如说 newdb ) 2.关闭服务器 3.用你的oldones(olddb)替换newdb mdf,ldf文件并尝试启动sql server 4.您的 newdb 将无法启动并且可能* 进入可疑状态 5.如果是这种情况,请尝试将数据库设置为紧急状态并设置为如下所示的单用户

alter database dbname set SET EMERGENCY;
alter database dbname  SET SINGLE_USER

6.现在尝试运行 DBCC checkDB

DBCC CHECKDB (N'dbname', REPAIR_ALLOW_DATA_LOSS) WITH ALL_ERRORMSGS, NO_INFOMSGS;

99% 的问题将由 DBCC 解决,如果是这样,您很幸运..

现在尝试设置数据库在线和多用户

*您的数据库有可能完全关闭(没有活动事务),如果是这种情况,您可以尝试在上述步骤之前运行以下命令。SQL 将为您创建一个新的日志文件

Create database dbname 
    On 
    (   
    Filename= 'path where you copied files'   
    )
    For attach; 

参考资料:http://www.sqlskills.com/blogs/paul/checkdb-from-every-angle-emergency-mode-repair-the-very-very-last-resort/http://www.sqlskills.com/blogs/paul/corruption-last-resorts-that-people-try-first/

【讨论】:

谢谢!!根据您的参考,数据库几乎 100% 被救出 @AlexDeiwor:使用哪个选项 1 或 2 就我而言是第一个。 @TheGameiswar

以上是关于从恢复中打开 SQL Server .mdf 和 .ldf 文件的主要内容,如果未能解决你的问题,请参考以下文章

sql server 数据库表误删除的恢复方法

从数据库文件(.mdf 和 .ldf)中恢复丢失数据的问题

MS SQL Server数据库修复/MDF数据文件数据恢复/MDF质疑/mdf无法附加

SQL恢复master数据库方法 只有mdf文件的数据库如何恢复

只有mdf文件,怎么恢复SQLSERVER数据库?

SQL Server2008 如何附加没有日志文件ldf的数据库mdf?