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
操作
我删除了列,因为我已将标准移至另一个table。
我正在使用 Entity Framework Code First 迁移来更改数据库。
我收缩数据库和数据库的文件
我重新启动 Microsoft SQL Server Management Studio
之后
当然,该列已按我的意图删除:
问题是在上述操作之后 table 的 size statistics
还是一样:
问题
- 是 Microsoft SQL Server Management Studio 的问题还是删除的列的数据仍然存在?
- 如何查看table的实际大小?
- 如果仍在使用,如何从列中删除已使用的数据。我是否需要以某种方式缩小或重新创建 table?
备注
屏幕截图与 UI 不同,因为我从生产数据库中获取了屏幕截图,因为在我的本地 SQL 服务器中,更改已经完成。
当您删除可变长度列时,它只是一个元数据操作,因此 space 不会立即回收。您可以使用 DBCC CLEANTABLE (https://msdn.microsoft.com/en-us/library/ms174418.aspx):
回收 space
DBCC CLEANTABLE(0, N'dbo.YourTable');
之前
我有一个有 8 列的 table。这里重要的是 SerializedCriteria
。这是一个包含 大量数据 的文本列。我所说的大量数据是指超过 37000 strings
且文本长度为 20-30 kb
。
无论如何,这就是 tabled 之前的样子:
table 的大小很大。 37218 records
总大小超过 1 GB
操作
我删除了列,因为我已将标准移至另一个table。 我正在使用 Entity Framework Code First 迁移来更改数据库。
我收缩数据库和数据库的文件
我重新启动 Microsoft SQL Server Management Studio
之后
当然,该列已按我的意图删除:
问题是在上述操作之后 table 的 size statistics
还是一样:
问题
- 是 Microsoft SQL Server Management Studio 的问题还是删除的列的数据仍然存在?
- 如何查看table的实际大小?
- 如果仍在使用,如何从列中删除已使用的数据。我是否需要以某种方式缩小或重新创建 table?
备注
屏幕截图与 UI 不同,因为我从生产数据库中获取了屏幕截图,因为在我的本地 SQL 服务器中,更改已经完成。
当您删除可变长度列时,它只是一个元数据操作,因此 space 不会立即回收。您可以使用 DBCC CLEANTABLE (https://msdn.microsoft.com/en-us/library/ms174418.aspx):
回收 spaceDBCC CLEANTABLE(0, N'dbo.YourTable');