恢复大型 SQL Server 2005 数据库时出现问题

恢复大型 SQL Server 2005 数据库时出现问题

我有一个客户,他有一个巨大的 SQL Server 2005 数据库(包括日志文件在内几乎有 400GB),并且一个表被无意删除了。我们正在尝试将其恢复到临时数据库,然后将数据从丢失的表中复制过来。

磁盘有大约 450GB 的可用空间。我刚开始恢复,SQL 就为新的临时数据库分配了 400GB,剩下 50GB 可用。然后恢复连续运行了大约 23 个小时,没有出现任何错误。在接近结束时(我不知道什么时候),它失败了,出现了类似“未找到错误”的错误,我认为这与磁盘空间有关,因为在此期间正在创建另一个文件,磁盘只有 8GB 可用。

数据库现在处于“正在恢复...”状态。

我想我可以删除这个数据库并重新开始,但是我的客户却焦急万分,因为他们没有数据库,而且不能再等 23 个小时 - 而且即使这样,它还能再次工作吗?

我的问题是 - 我能否让数据库脱离“正在恢复...”状态,至少只是为了看看它是否有我需要的数据 - 因为我只需要其中一个表中的数据。我已经尝试过:

RESTORE DATABASE xxx WITH RECOVERY

但结果出现了错误

消息 4333,级别 16,状态 1,第 1 行
由于日志未还原,因此无法恢复数据库。
消息 3013,级别 16,状态 1,第 1 行
RESTORE DATABASE 正在异常终止。

任何帮助都非常感谢。

答案1

如果需要从备份文件中恢复表及其数据,可以尝试

  1. Devart 模式比较 SQL Server恢复表结构本身

  2. Devart 数据比较 SQL Server复制表格行。

您不必从备份文件恢复数据库 - 这些产品直接从备份文件中读取数据库。

或者你可以尝试Red Gate 的 SQL 虚拟恢复将备份文件附加到 SQL Server 作为真实数据库,无需恢复!

答案2

释放服务器上的额外磁盘空间并尝试:

RESTORE DATABASE xxx FROM DISK = 'zzz' WITH RESTART

这应该尝试从故障点开始恢复,并且如果有足够的磁盘空间则可能导致完全恢复。

还原数据库时,SQL Server 将首先为数据文件创建并分配空间,其中包括将空页写入磁盘以占用空间(文件以“稀疏”方式创建,然后填充)。分配空间后,将以相同的方式为日志文件分配空间。只有当这两个操作都完成后,服务器才会开始将数据还原到这些文件中。对于非常大的数据库,这可能需要大量时间 - 在 Management Studio UI 中,还原将显示 0% 完成,直到此过程完成并还原第一个数据。

听起来像是日志文件的空间分配失败,恢复被中止。通常这会导致日志文件和数据文件从磁盘中删除,空间被回收 - 值得查看系统日志文件,看看您是否可以确定恢复未正常中止的原因。

相关内容