由于硬盘空间不足,我无法恢复 Microsoft SQL Server 数据库。原始数据库为1.6TB,从中删除了大约1.4TB ,并在不缩小数据库的情况下进行了备份。
备份文件只有168GB,是通过快递用硬盘寄给我的。当我尝试还原 168GB 的备份文件时,它会尝试创建原始的 1.6TB.mdf
数据文件,但出现错误,因为我所有可用的服务器都只有不到 1TB 的可用磁盘空间。
首先,我尝试将数据文件还原到 NTFS 压缩文件夹,但出现错误,指出目标文件可能未设置压缩位。
然后,根据此链接:在还原期间收缩 SQL 数据库
我尝试将恢复的.mdf
文件放入指向压缩文件夹的符号链接文件夹中,但它出错了:
System.Data.SqlClient.SqlError:磁盘卷“C:\”上的可用空间不足,无法创建数据库。数据库需要 1541063704576 个额外的可用字节,而只有 748261179392 个字节可用。(微软.SqlServer.SmoExtended)
然后,由于这是在 HYPER-V VM 中运行,我尝试将新的虚拟磁盘添加到压缩文件夹中,但 VM 不会开始抱怨驻留在压缩文件夹中的驱动器之一。
然后,我尝试将新的 HYPER-V 虚拟磁盘添加到指向压缩文件夹的符号链接文件夹中。这工作正常,除了文件在恢复时没有压缩并且在我杀死它之前空间即将用完(我猜资源管理器可能会在写入过程“SQL”关闭文件后压缩文件)
恢复后的数据库应该只有 168GB 的实际数据。
有人有解决办法吗?
您的选择非常有限。
我不确定这是否是一个答案,但它太大而无法评论
我多次遇到同样的问题。在我的例子中,它总是关于日志文件。当您备份时,日志文件可能不包含任何活动日志/数据,并且不会占用备份文件中的任何空间,但在恢复时,SQL Server 会尝试分配相同的空间。如果有任何方法可以在还原时忽略日志文件,则可以还原。
看看这个,它可能会有所帮助
您可以使用将所有文件重新定位到驱动器有大量可用空间的文件夹。我在 Drive
C
和 SSMS 中使用Relocate all files to
选项时遇到同样的问题,如图所示,然后单击“确定”并解决。