【问题标题】:Open SQL Server .mdf and .ldf files from recovery从恢复中打开 SQL Server .mdf 和 .ldf 文件
【发布时间】: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 你没事。我保证备份已经设置好了。

标签: sql-server recovery data-recovery


【解决方案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
猜你喜欢
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-08
  • 1970-01-01
相关资源
最近更新 更多