我有一个带有一个大表的SQL 2005数据库。我已经运行了一个删除,从表中删除一些项目,我想将空间释放回操作系统。
我尝试了以下命令
DBCC SHRINKDATABASE (MyDB, TRUNCATEONLY);
DBCC SHRINKFILE (MyTable, TRUNCATEONLY);我还使用以下命令重新构建了聚集索引
ALTER INDEX [IX_Clustered] ON [dbo].[MyTable] REBUILD WITH ( PAD_INDEX = ON, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF )收缩命令没有效果,索引重建使数据库大小增加了35 is (数据库为1.5TB)。
所以,我不知所措。要重新获得未使用的数据库空间,我需要做什么?
编辑:日志文件不是问题。主数据库.MDF文件太大了。
编辑2:这是sp_spaceused MyTable的结果
rows reserved data index_size unused
----------- ------------------ ------------------ ------------------ ------------------
1031649352 1543899648 KB 1481718624 KB 54444664 KB 7736360 KB发布于 2009-07-07 13:58:10
尝试使用DBREINDEX重新编制索引,更新统计数据,然后缩小,我认为这对我来说很有用。
DBCC DBREINDEX ('?', ' ', 80)
GO
EXEC sp_updatestats
GO发布于 2009-07-07 13:34:46
你查过日志文件大小了吗?您是否尝试过使用空格来查看表是否仍然/索引仍然占据了很大的空间?
发布于 2009-09-08 10:28:37
您是否删除了LOB数据(即文本、NTEXT、图像或XML数据类型)?
有时,如果已删除LOB数据,则需要重新生成表以恢复空间。
事实上,仅仅看了你的数字-- 99%的空间被data+index占据--你想要收回的自由空间在哪里?
https://stackoverflow.com/questions/1092348
复制相似问题