我正在为SQL Server 2012 EE开发一个计划,以正确缩小和键入(nchar到char类型)一些不必要的Unicode Nvarchar(MAX)字段,并希望通过做一次执行数据库大小作为停机的一部分收缩。实验已经显示了50%的分配空间节省,即11G数据。

读取和实验后,显然,缩小数据库会导致索引碎片和重建索引导致数据库扩展。一个真正的渔获力22情况。我不想在这种情况下在数据库中留下50%的可用空间,在这种情况下为11G磁盘存储。

以下是一个时间缩小的方法,允许以非碎片索引和最新索引统计数据结束?

o备份w /验证和重复备份。

o删除所有索引。

o通过副本重建任何太胖的表,然后删除和重命名表。这目前正常工作。

o缩小数据库,留下合理数量的可用空间。

>重新创建所有丢弃的索引。

o验证数据库并检查碎片。

指出要考虑的任何警告,建议,gotchas或替代方案,以考虑非常感谢。

thx,dave

有帮助吗?

解决方案

简单的恢复模型不会“关闭日志” - 这一般一般,除非您要将任何这些活动分解为非常小的块,只需预先大小到足够大的日志来处理最大的重建,并不要打扰恢复模型搞乱。

也,并且一般来说,除非您的数据将再次增长,除非您的数据再次生长,暂时释放空间几乎没有好处(因为我不知道你不知道“合理”的意思)。你将需要在驱动器上留下自由空间,以防数据库再次生长,对吗?为什么只缩小它再次成长?您是否会在数据库增长之前在该空间提供短期租赁?你只是试图避免免费空间%警报吗?

建议:给这些帖子一个很好的阅读...

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top