我正在尝试从32MB备份恢复数据库。我的磁盘上有6GB可用空间。当我尝试还原备份时,它显示磁盘空间不足错误。 32MB备份如何可能需要超过6GB的磁盘空间?
答案 0 :(得分:7)
可能是因为备份是压缩的,或者因为有一个非常大的日志文件不需要成为备份本身的一部分,或者因为数据文件本身已被清除 - 备份只包含页面包含数据。但是当恢复时,它仍然必须将数据文件扩展到其原始大小,即使大部分是空的。
向我们展示您运行时尺寸列的内容:
RESTORE FILELISTONLY FROM DISK = '[path]\whatever.bak';
答案 1 :(得分:0)
仔细检查要恢复mdf和ldf的磁盘总是好的,也许你是在一个完整的磁盘中创建文件,它可能会发生。
除此之外,我建议在其他地方恢复该备份,将文件缩小,然后再次备份以进行绝望的测量。
答案 2 :(得分:0)
其他答案解释了错误消息的原因,但未提供解决问题的方法。我遇到了同样的问题,这是我找到的解决方案。
插入具有大量可用空间的外部硬盘驱动器,然后将.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
一旦数据库成功还原到外部驱动器,您可以选择收缩文件,然后将其移动到硬盘驱动器或其他任何想要的位置。
答案 3 :(得分:0)
我遇到了同样的问题,我有一个800 MB的数据库备份文件,需要在目标计算机中还原320 GB的可用空间。
原来是由于数据库日志文件所致,要确定是引起此问题的原因,请右键单击预期的数据库并单击属性,然后在General
选项卡中选中Size
数据库中的数据库,如果数据库很大,请转到Files
标签,然后导航到tfile的路径。
我通过接口在数据库和文件上运行了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
上。