首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL 2005试图从数据库中重新获得空间

问SQL 2005试图从数据库中重新获得空间
EN

Stack Overflow用户
提问于 2009-07-07 13:30:17
回答 3查看 438关注 0票数 2

我有一个带有一个大表的SQL 2005数据库。我已经运行了一个删除,从表中删除一些项目,我想将空间释放回操作系统。

我尝试了以下命令

代码语言:javascript
复制
DBCC SHRINKDATABASE (MyDB, TRUNCATEONLY);
DBCC SHRINKFILE (MyTable, TRUNCATEONLY);

我还使用以下命令重新构建了聚集索引

代码语言:javascript
复制
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的结果

代码语言:javascript
复制
rows        reserved           data               index_size         unused
----------- ------------------ ------------------ ------------------ ------------------
1031649352  1543899648 KB      1481718624 KB      54444664 KB        7736360 KB
EN

回答 3

Stack Overflow用户

发布于 2009-07-07 13:58:10

尝试使用DBREINDEX重新编制索引,更新统计数据,然后缩小,我认为这对我来说很有用。

代码语言:javascript
复制
DBCC DBREINDEX ('?', ' ', 80)
GO
EXEC sp_updatestats
GO
票数 1
EN

Stack Overflow用户

发布于 2009-07-07 13:34:46

你查过日志文件大小了吗?您是否尝试过使用空格来查看表是否仍然/索引仍然占据了很大的空间?

票数 0
EN

Stack Overflow用户

发布于 2009-09-08 10:28:37

您是否删除了LOB数据(即文本、NTEXT、图像或XML数据类型)?

有时,如果已删除LOB数据,则需要重新生成表以恢复空间。

事实上,仅仅看了你的数字-- 99%的空间被data+index占据--你想要收回的自由空间在哪里?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1092348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档