SQL Server 2005:回收LOB空间

我在我的一个数据库中有一个有趣的表格,令我感到困惑。

有问题的表中有几个LOBtypes的列(两个nvarchar(max)和一个文本),看起来有一些奇怪的空间问题正在进行。

从这个查询:

SELECT type_desc, SUM(total_pages) *8 [Size in kb] FROM sys.partitions p JOIN sys.allocation_units a ON p.partition_id = a.container_id WHERE p.object_id = OBJECT_ID('asyncoperationbase') GROUP BY type_desc; 

我得到:

 type_desc Size in kb IN_ROW_DATA 27936 LOB_DATA 1198144 ROW_OVERFLOW_DATA 0 

(表中只有8000行,每行的数据长度为〜10k – 不包括LOB数据)

这里有一些有趣的地方:

 SELECT ( SUM(DATALENGTH(aob.WorkflowState)) + SUM(DATALENGTH(aob.[Message]))+ SUM(DATALENGTH(aob.[Data])) ) / 1024 

从AsyncOperationBase aob

收益:

 76617 

正如我正在读它 – 看起来~75MB的LOB数据正在使用一个空间存储 – 我希望有一些开销,但不会退出那么多。

谢谢,

安德鲁

好吧,我想我会更新这个以防别人帮忙。 在这个问题上结束了与MS支持工作,显然有一个后台工作线程负责释放空间。 在这种情况下,它已经停止工作。 简单的修复是重新启动SQL服务器。

干杯

安德鲁