我正在尝试从 32MB 备份中恢复数据库。我的磁盘上有 6GB 可用空间。当我尝试恢复备份时,它显示磁盘空间不足错误。32MB 的备份怎么可能需要超过 6GB 的磁盘空间?
4 回答
可能是因为备份被压缩了,或者因为有一个非常大的日志文件不需要成为备份本身的一部分,或者因为数据文件本身已被清除 - 备份仅由包含数据的页面组成. 但是当恢复时,它仍然需要将数据文件扩展为原来的大小,即使它大部分是空的。
向我们展示运行时大小列的内容:
RESTORE FILELISTONLY FROM DISK = '[path]\whatever.bak';
我有同样的问题,我有一个 800 MB 的数据库备份文件,需要 320 GB 的可用空间才能在目标计算机中恢复。
原来这只是因为数据库日志文件,为了确保日志文件是导致问题的原因,右键单击预期的数据库并单击属性,然后在数据库的General
选项卡检查Size
中,如果它很大,请转到Files
选项卡和导航到 tfiles 的路径。
我Shrink
通过界面在数据库和文件上运行命令,但没有帮助,以下查询最终救了我:
ALTER DATABASE DataBase_Name SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE(DataBase_Name_log, 200);
GO
ALTER DATABASE DataBase_Name SET RECOVERY FULL;
GO
这意味着您必须对数据库运行查询,然后再次创建一个备份文件。
注意:正如您在上面的查询中看到的,数据库恢复模式应该在执行Simple
之前打开SHRINKFILE
。
仔细检查您将 mdf 和 ldf 还原到哪个磁盘总是好的,也许您正在创建完整磁盘中的文件,它可能会发生。
除此之外,我建议在另一个地方恢复该备份,将文件缩小,然后再次备份以采取紧急措施。
其他答案解释了错误消息的原因,但没有提供问题的解决方案。我有同样的问题,这是我找到的解决方案。
插入具有大量可用空间的外部硬盘驱动器,然后将 .mdf 和 .ldf 文件移动到外部硬盘驱动器。此脚本可用于在还原时移动文件:
RESTORE DATABASE [MyDb] FROM DISK = N'C:\Data\Backup\MyDb_FULL.bak' WITH FILE = 1, MOVE N'MyDb' TO N'E:\Data\MyDb.mdf', MOVE N'MyDb_log' TO N'E:\Data\MyDb_log.ldf', NOUNLOAD, REPLACE, STATS = 5
数据库成功恢复到外部驱动器后,您可以选择缩小文件,然后将它们移动到硬盘驱动器或您希望它们位于的任何其他位置。