【发布时间】:2015-09-01 05:50:33
【问题描述】:
我们的生产数据库位于 SQL Server 2008 R2 上。我们的表之一 Document_Details 存储用户通过我们的应用程序 (VB) 上传的文档。它们以 varbinary(max) 格式存储。有超过 20k 个 pdf 格式的文件,其中许多都很大(有些是 50mb)。所以总的来说这张表是90GB。然后,我们运行了一个 exe,将这些 pdf 文件压缩到 10GB。
但是问题就在这里 - 表的大小仍然是 90GB。未分配的空间尚未释放。如何取消分配此空间以使表为 10GB?
我尝试将表移动到新文件组,然后返回原始文件组,但无论哪种情况,它都没有释放任何空间。
我也尝试重建表上的索引,但也没有用。
有效的方法(但我听说不推荐)是 - 将恢复类型从简单更改,缩小文件组,将恢复设置为完整。
我能否将此表移动到一个新文件组并然后缩小该文件组(即仅 Document_Details 表)?我知道收缩命令会影响性能,但如果它只是 1 个表,它仍然是一个问题吗?或者还有什么我可以尝试的吗?
谢谢。
【问题讨论】:
-
你运行了什么exe来压缩数据?
-
你试过 DBCC SHRINKDATABASE
-
@Prime - 我们的开发人员创建了一个压缩 pdf 的命令行 .net exe。
-
@frlan - 我做到了,而且成功了,但我认为这会影响性能并且不推荐?
-
偶尔收缩一个数据库不是问题。但它不是那么有用。就您而言,为什么要节省 80gb 空间?最终,您仍然需要 90gb 或更多的空间。
标签: sql sql-server shrink