sql-server-2005 - 在 SQL Server 2005中,如何从 MDF 恢复数据库?

  显示原文与译文双语对照的内容

我有一个 MDF 文件,没有在 MS SQL Server 2005中创建的数据库的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.

我想完成以下任一选项:

  • 在没有数据丢失( 不可能但会节省我一些时间)的情况下附加数据库。
  • 将数据库附加到数据丢失( 任何打开的交易都会丢失) 。
  • 从 MDF 文件中只恢复架构( 无数据) 。

我可以尝试哪些SQL命令来重新运行数据库?

时间: 原作者:

我在专家交换找到了以下文档。

patrikt: 你将有数据丢失,但可以完成。

1. Detach database and move your mdf to save location.
2. Create new databse of same name, same files, same file location and same file size.
3. Stop SQL server.
4. Swap mdf file of just created DB to your save one.
5. Start SQL. DB will go suspect.
6. ALTER DATABASE yourdb SET EMERGENCY
7. ALTER DATABASE yourdb SET SINGLE_USER
8. DBCC CHECKDB (yourdb, REPAIR_ALLOW_DATA_LOSS)
9. ALTER DATABASE yourdb SET MULTI_USER
10. ALTER DATABASE yourdb SET ONLINE
原作者:

以下是包含零部件 2 ) 和 3 )的详细信息,如果 MDF 文件损坏,则不能使用它。

只能通过使用第三方工具读取写作二进制数据但不能完全完全执行工作的MDF 文件恢复数据和结构。

在这种情况下,你可以尝试 ApexSQL恢复。 我知道这是唯一能做这类工作的工具,但它相当昂贵。

最好是尝试从任何旧备份中恢复这些,如果你有任何。

...