将 bak 文件还原为较小的 mdf 和 ldf 数据库文件

eou*_*3hf 11 sql-server-2008 sql-server sql-server-2008-r2 recovery

我有一个遗留数据库,它可怕的设计缺乏我不会在这里介绍,但服务器上的文件(相对)巨大。我有:

我的数据库.mdf
:24.8GB 我的数据库.ldf :114.6GB

该数据库每晚备份到一个 .bak 文件,然后发送到我们的报告服务器,在那里恢复。.bak 文件要小得多,只有 1.8GB。

但是,当我尝试在报告服务器上还原它时,由于空间不足而失败。服务器上有大约 100GB 的可用空间,它试图吃掉原始服务器上文件消耗的全部 139.4GB。除非我的压缩知识大错特错,否则我很有信心 1.8GB 的​​文件实际上并没有扩展 7400%。

我的问题:有没有办法告诉 SQL Server 恢复这个备份文件而不预先保留那个空间?我不关心任何日志;我只需要数据就在那里。我从开发和模式的角度理解数据库,但我绝不是任何类型的 DBA。

这是在 SQL Server 2008 R2 上。感谢您的任何帮助或建议。

Rem*_*anu 11

备份包含两条信息:

备份中的实际数据是 1.8 GB。但是元数据将文件的布局描述为原始生产服务器上的布局。虽然看起来像压缩,但实际上并不是压缩。只是元数据与内容。问题在于,在 RESTORE 期间,报告机会创建元数据中描述的布局,因此为 114.6GB + 24.8GB。现在真正的问题是:您可以在不重新创建原始数据库文件布局的情况下恢复它吗?不。但是,您的问题还有另一种解决方案:检查原始数据库。收缩事务日志涵盖了您需要执行的步骤,因为日志是您的主要痛点。接下来我将部署日志传送而不是备份/恢复。

  • @Shark:日志传送而不是*完整* 备份,作为将数据库传送到报告机的一种方式。 (4认同)