使用SQL Server 2012 Entreprise。
我有一个包含120亿行的表,在磁盘上占用700GB,在30个分区中。 它只有一个索引,聚集在一起。 我有500 GB的可用磁盘空间。
我禁用了索引(请不要问为什么。如果你必须知道,我的目标是错误的数据库)。
我现在想要启用索引。如果我做
alter index x1 on t1 rebuild
我最终得到一个错误,因为没有足够的可用磁盘空间。关于重建聚簇索引的磁盘空间要求,这是一个痛苦的教训。
理想情况下,我想一次重建索引一个分区。如果我做
alter index x1 on t1 rebuild partition = 1
我收到错误:无法对禁用的索引执行指定的操作。
任何解决方案,除了购买更多物理磁盘?自从禁用索引后这个表没有改变(无论如何都无法访问),所以我真的在寻找一个可以让SQL误认为索引已启用的黑客攻击。有什么建议吗?
由于
答案 0 :(得分:0)
如果你已经禁用的聚簇索引已经有效地禁用了表,那么你可以在这个表上执行的唯一操作是“drop”或“rebuild”,据我所知。
您可以尝试弃用的dbbc dbreindex命令,也许您很幸运,它可以有效地重建更多的磁盘空间。如果在重建时将填充因子设置为100,也可以挤出更多空间。假设您现在只读取数据库表。
DBCC DBREINDEX ('Person.Address', 'PK_Address_AddressID', 100)
允许您仅重新索引聚集索引。