来自多客户数据库的单个客户备份

来自多客户数据库的单个客户备份

我们有一个多客户数据库,大小约为 95GB。其中一位客户要求每月备份其数据。我们有一个脚本,可从所有与指定 ID 无关的表中删除所有记录。

因此,我们将数据库备份恢复到新数据库,运行脚本将其精简,这样数据库就只包含 1 个客户,而不是 100 个左右。但数据库的大小仍然为 95GB,尽管现在应该有 90% 以上是空的。

我尝试过多种不同的组合,使其脱机,然后重新联机,在剥离后备份,DBCC SHRINKDATABASE 和 DBCC SHRINKFILE 的各种不同组合等。

到目前为止,我最好的做法是花大约 9 个小时将文件缩小到 15gb 左右。每次缩小最多只能减少 10-20%,即使我指定留下 0 个可用空间。

几个表包含具有图像数据类型的列,我认为这与它有关,但我似乎仍然找不到可靠的解决方案。

最终目标是制定一个每月运行一次的计划/作业,将备份还原到新数据库,将其剥离,缩小,然后将其备份到文件夹并删除新数据库。但如果可能的话,我们真的希望在 9-12 小时内完成此操作。

任何帮助,将不胜感激。

答案1

我怀疑恢复过程正在创建一个 95 GB 的数据库。来自 shrinkdatabase:

数据库的大小不能小于数据库的最小大小。最小大小是最初创建数据库时指定的大小,或使用文件大小更改操作(例如 DBCC SHIRNKFILE 或 ALTER DATABASE)明确设置的最后一个大小。例如,如果一个数据库最初创建时的大小为 10 MB,后来增长到 100 MB,那么数据库最小可以缩小到 10 MB,即使数据库中的所有数据都已被删除。

我会通过编写一个脚本来创建新的数据库并进行选择来改变你这样做的方式进入客户数据

相关内容