我们正在尝试恢复数据库(通过运行我们手工编写的 SQL 脚本以编程方式创建)。我们的备份例程是在星期六对 SQL Server 2008 实例上的每个数据库进行完整备份,然后创建自动事务日志(我假设这些日志无论如何都是自动创建的 - 我们似乎有很多日志文件,可能是在进行完整备份后每个事务都有一个日志文件?)。
本周二,有问题的数据库被删除,并创建了另一个具有完全相同名称和架构的数据库。SQL Server 继续创建事务日志文件,但它还没有机会创建新的完整备份(直到下周六才会发生)。
现在,事实证明我们需要将数据库恢复到周四的状态。这是后“删除并重新创建”。我的问题是,这可能吗?如果不可能,那么 SQL Server 究竟认为它正在向删除并重新创建后创建的那些事务日志写入什么?(我理解它们是包含二进制增量的文件,这让我觉得也许我们可以从中恢复?)
我不是 DBA,但我们的 IT 部门也不是,所以我正在尽我所能解决这个问题。任何建议都非常感谢!
答案1
不,您将无法恢复“新”数据库,因为 SQL Server 需要对数据库进行完整备份,然后才能将后续日志备份应用到该数据库。
虽然您可能使用了相同的数据库/架构名称,但就 SQL Server 而言,数据库本身是不同的对象/实体,因此您无法使用原始完整备份,然后将所有日志重播到其中。您应该在创建数据库后立即对其进行完整备份。
希望这只是您所指的测试系统...听起来您可以找人进行一些基本的数据库管理培训。如果您在测试系统上进行一些练习,那么在一两个小时内学会基本的 SQL Server 备份/恢复并不难,而且它会很快帮助您了解正在生成的所有文件。
编辑:
除此之外……我刚刚想到了您的评论,即 SQL 仍在创建日志。您认为这里还发生了其他事情。如果您删除了数据库但尚未对新数据库进行完整备份,则当您尝试进行日志备份时,SQL Server 会抛出错误。它不会让您在没有先进行原始完整备份的情况下备份日志。您需要验证您的备份脚本,因为日志备份会抛出错误,或者您甚至没有进行日志备份,而是在查看完全不同的东西。
答案2
将您最新的完整备份恢复到同名的新数据库并应用您的事务日志以回到时间点。