发生了什么?我的客户丢失了硬盘。他必须恢复数据库。
- 他有 15 天前的数据库的完整备份。
- 他有这个数据库的ldf(日志)文件。
- 他没有mdf文件(它位于该硬盘上)。
如果他在 15 天前进行完整备份时使用 SQL Management Studio 中的标准选项(数据库结构仍然发生变化),它是否有足够的组件来恢复 SQL Server 2008 数据库?是否可以至少恢复崩溃时刻实际的数据库结构(可以从其他来源重新生成数据)?
最后:
1)是否可以恢复所有数据库(数据+结构)
2)是否可以恢复数据库结构
谢谢你。
添加:
SQL Server Enterprise(6.1 或 5.x)的 LiteSpeed帮助了我。
1) 数据库从完全备份(15 天前的备份)中恢复
2) 然后 LiteSpeed 使用 mdf 文件的副本(参见上一步)和保存的 ldf 文件(崩溃时的日志)生成所有更改的 sql 脚本(DDL/DML)。
3)然后在步骤1中将此脚本应用于恢复的数据库)
无论如何,此应用程序存在很多问题(错误),但它至少有助于恢复数据库结构更改。
您的数据库必须处于完全恢复模式,并且在过去 15 天内没有创建任何事务日志备份。前提是在完整数据库备份之后发生的所有事务仍在您的 LDF 文件中。否则,您的 LDF 和完整数据库备份事务之间会存在差距,您将无法成功恢复所有内容(可能就是这种情况)
在同一场景中可以使用另一个工具从 LDF 文件中读取事务并为它们创建重做脚本 - ApexSQL Log。
LDF 不是日志备份,因此我认为您无法像上次完整备份期间那样恢复数据库。如果自上次完整备份以来您有事务日志备份,您也可以恢复这些备份并让您恢复到最近的备份。
除非有人回答知道一些技巧,否则恐怕您已经丢失了 15 天的数据。
如果您拥有从上次完整备份到现在的所有事务日志备份,并且数据库在完整备份模式下运行,那么是的,您可以恢复到现在。无论如何,您应该依靠备份来截断事务日志...
如果您的数据库处于简单恢复模式,则您无法执行时间点恢复。如果数据库不是简单恢复模型,并且您在故障点之前有日志备份,而日志链没有中断,那么您可以按照所指出的那样进行尾部日志备份(如果 LDF 完整且命令成功)由 yrushka 出并执行数据库的时间点恢复,而不会丢失任何数据。如果到目前为止还没有日志备份,那么不幸的是什么也做不了。
另一种选择是,如果您的数据库处于完整/批量日志恢复模型并且没有进行日志备份,则可以使用工具(例如来自 Idera、LiteSpeed)读取事务日志,这将允许您生成命令来自事务日志文件,一旦恢复,就可以在数据库上重播。
此外,如果您有完整备份和到目前为止的所有日志备份,那么您可以将它们还原到最新的可用日志备份。然后使用上面的日志阅读器工具,您可以从 LDF 文件生成其余命令并针对数据库重放它们。
仅当到目前为止您有完整备份和日志备份并且它们之间没有间隙(损坏的日志备份)时,您才能使用 LDF 文件恢复数据库。可以备份当前的日志文件。它称为日志尾备份,可在还原过程的最后使用。您将在恢复 FULL + ALL LOG 备份后最后使用 Recovery 选项恢复此备份