还原小备份时磁盘空间不足

时间:2013-03-11 20:45:22

标签: sql-server sql-server-2005

我正在尝试从32MB备份恢复数据库。我的磁盘上有6GB可用空间。当我尝试还原备份时,它显示磁盘空间不足错误。 32MB备份如何可能需要超过6GB的磁盘空间?

4 个答案:

答案 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上。