我更改了一个用于包含Lob列(VarBinary(MAX))的表。
当我跑步时
select * from sys.dm_db_partition_stats
where [object_id] = object_id('MyTable')
lob_used_page_count是1014969.我认为它会是0.我错了还是有什么我需要做的?
答案 0 :(得分:0)
试试ALTER TABLE MyTable REBUILD
。
似乎从下面的测试中做到了这一点。
CREATE TABLE LobTest
(
PK INT IDENTITY PRIMARY KEY CLUSTERED,
A CHAR(7000),
B VARCHAR(MAX)
)
INSERT INTO LobTest
SELECT 'A', REPLICATE(CAST('A' AS VARCHAR(MAX)), 10000) UNION ALL
SELECT 'A', REPLICATE(CAST('A' AS VARCHAR(MAX)), 10000) UNION ALL
SELECT 'A', REPLICATE(CAST('A' AS VARCHAR(MAX)), 10000)
ALTER TABLE LobTest
DROP COLUMN B
SELECT *
FROM sys.dm_db_partition_stats
WHERE [object_id] = object_id('LobTest')
ALTER TABLE LobTest REBUILD
SELECT *
FROM sys.dm_db_partition_stats
WHERE [object_id] = object_id('LobTest')
DROP TABLE LobTest
答案 1 :(得分:0)
重建聚集索引。在SQL Server中删除列时,在重建聚簇索引之前,它实际上不会被物理删除。