在 SQL Server 2005 上使用较少磁盘空间从备份恢复

在 SQL Server 2005 上使用较少磁盘空间从备份恢复

在我的公司,我们在虚拟机的 c: 驱动器上安装了 SQL Server 2005。所有实际数据库文件都位于单独的(虚拟)数据驱动器 E: 上。c: 驱动器很小,剩余磁盘空间约为 1.5 GB,而 E: 则非常大。

我有一个数据库,存储在 E: 上,我试图从备份中恢复它,备份也存储在 E: 上。但是当我尝试时,SQL Server 告诉我

磁盘卷“C:\”上没有足够的可用空间来创建数据库。数据库需要 3804626944 个额外的可用字节,而可用的字节只有 1791596544 个。

...就目前情况而言,这是真的:C: 确实有那么多剩余空间。但这有什么关系呢?.bak 文件、.mdf 和 .LDF 都在 E: 上!

我怎样才能说服 SQL Server 2005 在有足够空间的 E: 上创建临时文件或它认为需要所有磁盘空间的任何文件?

答案1

您是否尝试恢复 E: 上的现有数据库?如果是这样,SQL Server 根本不需要 C: 上的空间。

听起来你要么试图将数据库的另一个副本恢复到 C:(除非有足够的空间,否则你将无法执行此操作),要么当数据库的文件位于 C: 上时对其进行了备份,因此它试图在 C: 上重新创建它们。

您可以通过对备份执行 RESTORE FILELISTONLY 来检查这一点,它会告诉您将尝试创建的数据库文件(请参阅联机丛书这里)。如果它们指向 C:,则可以使用 WITH MOVE 语法在 E: 上创建它们。

您可以在以下在线书籍中看到此示例:http://msdn.microsoft.com/en-us/library/ms186858.aspx#restoring_db_n_move_files

希望这可以帮助!

答案2

如果您使用的是 SQL Server Management Studio GUI 工具,请点击恢复对话框中的“高级”选项卡,并确保目标数据文件的路径正确。听起来源数据库位于 C: 上——这些路径就是这样的。

相关内容