SQL Server Management Studio 未显示 table 的正确数据 space

SQL Server Management Studio not showing correct data space of a table

之前

我有一个有 8 列的 table。这里重要的是 SerializedCriteria。这是一个包含 大量数据 的文本列。我所说的大量数据是指超过 37000 strings 且文本长度为 20-30 kb

无论如何,这就是 tabled 之前的样子:

table 的大小很大。 37218 records 总大小超过 1 GB

操作

  1. 删除了列,因为我已将标准移至另一个table。 我正在使用 Entity Framework Code First 迁移来更改数据库。

  2. 收缩数据库和数据库的文件

  3. 重新启动 Microsoft SQL Server Management Studio

之后

当然,该列已按我的意图删除:

问题是在上述操作之后 table 的 size statistics 还是一样:

问题

  1. 是 Microsoft SQL Server Management Studio 的问题还是删除的列的数据仍然存在?
  2. 如何查看table的实际大小?
  3. 如果仍在使用,如何从列中删除已使用的数据。我是否需要以某种方式缩小或重新创建 table?

备注

屏幕截图与 UI 不同,因为我从生产数据库中获取了屏幕截图,因为在我的本地 SQL 服务器中,更改已经完成。

当您删除可变长度列时,它只是一个元数据操作,因此 space 不会立即回收。您可以使用 DBCC CLEANTABLE (https://msdn.microsoft.com/en-us/library/ms174418.aspx):

回收 space
DBCC CLEANTABLE(0, N'dbo.YourTable');