根据Microsoft的文档here,它说如果你调用以下命令
DBCC SHRINKDATABASE(N'MyDb', NOTRUNCATE)
因为传递了NOTRUNCATE参数,释放的空间不会返回到操作系统,因此会显示数据库没有缩小/修改。此外,文档声明物理文件大小不会改变。那你为什么要做什么呢?
DBCC SHRINKDATABASE(N'MyDb', 20) --20 is the percentage of free space that you want left in the database file after the database has been shrunk
或
DBCC SHRINKDATABASE(N'MyDb')
不是缩小数据库以释放内存的全部意义吗?我在这里缺少什么?
答案 0 :(得分:1)
我开始写回复,但说服自己我的论点没有意义。然后我得到了另一个想法,开始写这个,并再次谈论自己。这是第三次了,再次无法合理化NOTRUNCATE
。
不放弃文件空间的唯一好处是,如果你知道你只是要立即抓住它 - 在这种情况下,为什么要打扰SHRINKDATABASE
?坚持重建索引来整理表碎片而不缩小数据库文件(众所周知,可以并且会重新分割表格)并且你得到的结果比收缩产生的结果更好。
所以,不,我不知道你为什么要这样做。