1

Lob 列 (VarBinary(MAX)) を含むテーブルを変更しました。

私が走るとき

select * from sys.dm_db_partition_stats
where [object_id] = object_id('MyTable')

lob_used_pa​​ge_count は 1014969 です。0 になると思っていました。間違っているのでしょうか、何かする必要がありますか?

4

2 に答える 2

0

クラスター化インデックスを再構築します。SQL Server で列を削除しても、クラスター化インデックスが再構築されるまで実際には物理的に削除されません。

于 2012-11-06T17:31:09.307 に答える
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 
于 2012-11-06T16:59:52.163 に答える