数据库恢复失败

roc*_*ace 5 sql-server sql-server-2012

我想恢复我的数据库,我使用 sql server 2012 express edition 但是当我在 sql server management studio 中恢复我的备份文件时,我出现了这个错误:

System.Data.SqlClient.SqlError: 磁盘卷“c:\”上的可用空间不足,无法创建数据库。数据库需要 84260749312 个额外的空闲字节,而只有 47428677632 个字节可用。(Microsoft.SqlServer.SmoExtended)

我的 .bak 文件是 8.27 GB,我的 C 盘有 44.1 GB 可用空间。为什么我会出现这个错误?我该如何解决这个错误?提前致谢。

Mik*_*Fal 6

正如Max Vernon所说,数据库正试图恢复到一个没有空间容纳它的位置。如果备份文件被压缩或大部分是空的,您仍然需要完整的未压缩空间来恢复。此外,默认情况下,SQL Server 会尝试将这些文件还原到其原始文件位置,因此如果还原时该原始位置不存在或没有足够空间,则还原将失败。

为了查看备份所需的空间和位置,您可以运行以下命令:

RESTORE FILELISTONLY
FROM DISK='<backup file location>'
Run Code Online (Sandbox Code Playgroud)

此输出将显示备份中包含的所有文件。看看PhysicalNameSize为恢复位置和大小(以字节为单位)的SQL Server需要为恢复。您可以通过WITH MOVE在您的恢复语句中指定语法来更改恢复位置,但正如 Max 所述,您对所需空间无能为力。


Han*_*non 2

您需要 84,260,749,312 字节的可用空间来创建恢复数据库所需的文件。备份文件不一定代表所需的大小。

您只能将此备份恢复到具有所需可用空间的驱动器。

  • 如果您的数据库文件中有大量“已分配”空间(即使实际数据只有 8GB),则在执行还原时需要相同数量的可用空间。此规则有一个例外,但它并不漂亮:http://ariely.info/Blog/tabid/83/EntryId/118/shrink-SQL-database-during-restore.aspx (2认同)
  • 你是对的,Rockenpeace,它不起作用。备份集的大小在这里无关紧要——只有源数据库的大小很重要。要恢复该备份,您的计算机上的驱动器需要至少有 84.2 GB 的可用空间。或者,您可以转到源服务器,缩小数据库,然后进行另一个备份。 (2认同)