使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

症状

假设你有一个表,其中包含 Microsoft SQL Server 2008、SQL Server 2008 R2、SQL Server 2012 或 SQL Server 2014 中的大型对象(LOB)列。 当您使用较小的 LOB 数据大小更新 LOB 列并尝试使用以下方法回收未使用的空间时:

  • DBCC SHRINKDATABASE/DBCC SHRINKFILE

  • 更改索引(LOB_COMPACTION = ON)重新组织

在这种情况下,不能回收未使用的空间。

SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:

解决方法

要解决此问题,请使用以下解决方法:

  • 将所有行导出到新表,并将行移回。 这将重新组织 LOB 数据并释放未使用的空间。

  • 使用带有 EMPTYFILE 选项的 DBCC SHRINKFILE 将所有数据移动到新添加的数据文件中,然后删除旧的数据文件。 这将通过释放未使用的空间来重新组织 LOB 数据。

更多信息

以下示例显示了在更新 LOB 列之前和之后使用 TSQL 命令 sp_spaceused "table_name" 的空间,在更新之前和之后:

保留

数据

index_size

snap

table_name

1000

261072 KB

261056 KB

16 KB

0 KB

更新后:

保留

数据

index_size

snap

table_name

1000

261072 KB

199672 KB

16 KB

61384 KB

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×