我们有一个多客户数据库,大小约为95GB。 其中一位客户要求每月备份他们的数据。 我们有一个脚本,可以从所有表中删除与指定ID无关的所有logging。
所以我们把数据库的备份恢复到一个新的数据库,运行我们的脚本去除它,这留下了一个包含1个客户而不是100个客户的数据库。 但是DB仍然是95gb,即使它现在应该是90%+空。
我已经尝试了许多不同的组合,使其脱机,然后重新联机,在脱机后将其备份,DBCC SHRINKDATABASE和DBCC SHRINKFILE的各种不同组合等。
到目前为止,我所做的最好的工作是将大约9小时的文件缩小到15GB左右。 即使当我指定留下0空闲空间时,每次收缩的最大值也是10-20%。
其中一些表包含图像数据types的列,我认为这与它有关,但我似乎还找不到一个可靠的解决scheme。
最终目标是要有一个计划/工作,每月运行一次,以备份到一个新的数据库,剥离下来,缩小,然后回到一个文件夹,并删除新的数据库。 但是,如果可能的话,我们真的希望在不到9-12个小时的时间内做到这一点。
任何帮助,将不胜感激。
我怀疑还原过程正在创build一个95 GB的数据库。 来自shrinkdatabase:
数据库不能小于数据库的最小大小。 最小大小是最初创build数据库时指定的大小,或者是使用文件大小更改操作(如DBCC SHIRNKFILE或ALTER DATABASE)显式设置的最后大小。 例如, 如果最初创build的数据库的大小为10 MB,并且增长到100 MB,即使数据库中的所有数据都已被删除,数据库的最小值也可以减less到10 MB。
我会通过编写一个脚本创build一个新的数据库,并为客户数据做一个select来改变你这样做的方式