启用索引而不重建?

时间:2014-07-04 22:39:06

标签: sql-server

使用SQL Server 2012 Entreprise。

我有一个包含120亿行的表,在磁盘上占用700GB,在30个分区中。 它只有一个索引,聚集在一起。 我有500 GB的可用磁盘空间。

我禁用了索引(请不要问为什么。如果你必须知道,我的目标是错误的数据库)。

我现在想要启用索引。如果我做

alter index x1 on t1 rebuild

我最终得到一个错误,因为没有足够的可用磁盘空间。关于重建聚簇索引的磁盘空间要求,这是一个痛苦的教训。

理想情况下,我想一次重建索引一个分区。如果我做

alter index x1 on t1 rebuild partition = 1 

我收到错误:无法对禁用的索引执行指定的操作。

任何解决方案,除了购买更多物理磁盘?自从禁用索引后这个表没有改变(无论如何都无法访问),所以我真的在寻找一个可以让SQL误认为索引已启用的黑客攻击。有什么建议吗?

由于

1 个答案:

答案 0 :(得分:0)

如果你已经禁用的聚簇索引已经有效地禁用了表,那么你可以在这个表上执行的唯一操作是“drop”或“rebuild”,据我所知。

您可以尝试弃用的dbbc dbreindex命令,也许您很幸运,它可以有效地重建更多的磁盘空间。如果在重建时将填充因子设置为100,也可以挤出更多空间。假设您现在只读取数据库表。

DBCC DBREINDEX ('Person.Address', 'PK_Address_AddressID', 100)

允许您仅重新索引聚集索引。