2

我有一个 31 GB 的数据库,我从一个客户那里得到一个项目。我正在编码并将数据库保存在 80GB Win7 VM 中。我得到了 db 文件并从中导入了数据库,发现空间大部分被一张表占用了,有 240,000 张图像。我删除了大部分行,现在有 29,000MB 可用。我无法执行很多功能,因为驱动器已降至最后几 GB,并且仍有很多记录需要修改(我正在更改多个表中的数据类型,但不断收到 active_transaction 错误)。DBCC_SHRINKDATABASE(0)它不会通过或Tasks > Shrink > Database或文件缩小。当我第一次得到它时,它似乎只缩小到数据库的大小。我如何让它释放那个空间?如果可以的话,我可以将仍然存在的数据导出到较小的数据库中,然后从中恢复吗?

运行 SQL Server 2012 和 Management Studio。

谢谢,

托尼

4

2 回答 2

1

您不能dbcc shrinkdatabase低于初始尺寸设置。如果您的数据库的初始大小设置为 50GB——MDF 将始终至少为 50GB,即使 29GB 是免费/可用的。

如果您确实有可用空间,您可以将初始大小设置降低到更合理的值 - 但如果 MDF 将再次自动增长,则不建议这样做,因为它会产生高开销。

为此,您将使用dbcc shrinkfile.

请参阅此处了解更多信息。

于 2015-07-31T19:24:52.353 回答
0

本页介绍如何进行 SQL Server 备份。https://msdn.microsoft.com/en-us/library/ms186865(v=sql.110).aspx

如果您还没有这样做,则需要先进行完整备份,然后才能进行事务日志备份。

于 2015-07-31T19:21:44.207 回答