SQL 服务器数据库不会收缩

SQL Server database won't shrink

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

运行 SQL Server 2012 和 Management Studio。

谢谢,

托尼

此页面介绍了如何进行 SQL 服务器备份。 https://msdn.microsoft.com/en-us/library/ms186865(v=sql.110).aspx

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

您不能 dbcc shrinkdatabase 低于初始大小设置。如果数据库的初始大小设置为 50GB——MDF 将始终至少为 50GB,即使 29GB 是 free/available.

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

为此,您可以使用 dbcc shrinkfile

请参阅here了解更多信息。