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


11

我有一个遗留下来的数据库,该数据库的设计缺乏噩梦,在这里我将不再赘述,但是服务器上的文件(相对)巨大。我有:

MyDatabase.mdf:24.8GB
MyDatabase.ldf:114.6GB

每天晚上,该数据库都会备份到.bak文件中,并运送到我们的报告服务器上,并在其中进行还原。.bak文件要小得多,只有1.8GB。

但是,当我尝试在报告服务器上还原它时,由于空间不足,它失败了。服务器上大约有100GB的可用空间,它正试图吞噬原始服务器上所用文件的全部139.4GB。除非我对压缩的认识完全错误,否则我非常有信心1.8GB文件实际上不会扩展7400%。

我的问题:有什么方法可以告诉SQL Server还原此备份文件而无需预先保留该空间?我不在乎任何日志;我只需要那里的数据。我从开发和架构的角度理解数据库,但是我绝不是任何类型的DBA。

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

Answers:


11

备份包含两个信息:

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


谢谢; 缩小事务日志可以完美地解决问题。
eouw0o83hf 2012年

1
日志传送代替日志备份?
Thomas Stringer 2012年

4
@Shark:日志传送而不是完整备份,这是将数据库传送到报告计算机的一种方式。
Remus Rusanu 2012年

哦,好吧,我完全错过了问题的那一部分。感谢您的澄清!
Thomas Stringer 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.