是否可以同时恢复sql-server bak和收缩日志?

Ada*_*ler 27 sql-server-2005 sql-server backup restore

我们有一个客户的 bak 文件,我们已将其转移到我们的开发人员办公室进行问题调查。备份当前为 25GB,还原的数据库大小大致相同,但需要 100GB 才能还原。我相信这是因为数据库设置为具有 75GB 的事务日志大小。恢复数据库后,我们可以缩小日志文件,但有没有办法在恢复中做到这一点?

Mar*_*ith 34

有一种拒收不断做-这-IN-A-现场环境黑客可以使用在空间有限,通过日志文件恢复到压缩文件夹。通过压缩现有文件夹并恢复到它来尝试此操作将导致错误,因此您必须使用符号链接进行欺骗。

  1. 创建压缩文件夹 D:\LogCompressed\
  2. 创建指向压缩文件夹的符号链接 mklink /D /J D:\Log\ D:\LogCompressed\

  3. 使用指向的 ldf 文件恢复数据库 D:\Log\

  4. 将日志文件缩小到合适的大小

  5. 分离数据库,将日志文件移动到一个未压缩的文件夹,附加

它很脏,它在作弊,永远不要在现场这样做,但它有效。使用 32MB 日志文件对新创建的数据库进行快速测试,显示它在压缩时占用磁盘 330kb,解压文件夹,磁盘大小恢复到 32MB。

  • @Mark:这个 hack 有效,但并不完美。即使日志文件占用的空间远小于其实际大小,您也无法恢复数据库,除非磁盘确实具有与数据库实际大小一样多的可用空间。Besize,在恢复时,日志文件的实际大小从实际大小缓慢下降,很痛苦。然而,它仍然是一个非常好的黑客。谢谢。 (2认同)

mrd*_*nny 16

作为还原过程的一部分,无法缩小备份。恢复的数据库必须与源数据库完全一样,唯一的例外是您可以更改驱动器号和文件夹。


Tho*_*ger 9

我相信您的备份是 25 GB 并且还原的数据库是 100 GB 的原因不是因为您的事务日志。我的猜测是,您的数据库文件有 100 GB 的分配空间,数据库中有 25 GB 的实际数据。

分配的数据库文件空间使用的数据空间之间存在差异。在本例中,前者为 100 GB,后者为 25 GB。