没有事务日志还原SQL Server数据库

Pha*_*mer 47 sql-server transaction-log restore

给定一个SQL Server 2008 .bak文件,有没有办法.bak文件中恢复数据文件,而没有事务日志

我问的原因是这个数据库的事务日志文件大小很大 - 超过我现有的磁盘空间.

我对事务日志没兴趣,对任何未完成的事务没兴趣.通常,我只是将日志缩小为零,一旦我恢复了数据库.但是,当我没有足够的磁盘空间来创建日志时,这没有任何帮助.

我需要的是告诉SQL Server只恢复.bak文件中的数据而不是事务日志的方法.有没有办法做到这一点?

请注意,我无法控制.bak文件的生成- 它来自外部源.在生成.bak文件之前缩小事务日志不是一种选择.

小智 9

事务日志是备份的组成部分.您不能告诉SQL Server忽略事务日志,因为没有办法让我们说同时恢复和收缩事务日志文件.但是,您可以查看DBA帖子来破解该过程,尽管根本不建议这样做

或者,您可以尝试使用某些第三方工具进行还原,尤其是可以节省大量空间和时间的虚拟还原过程.查看ApexSQL Restore,RedGate Virtual Restore,Idera虚拟数据库.

免责声明:我为ApexSQL工作,担任支持工程师


Chr*_*end 7

不,事务日志是必需的.

选项1:

一个选项可能是将其恢复到您有足够空间的机器上.然后在还原的副本上将日志记录更改为批量记录或简单,缩小日志,对此新副本执行另一个备份操作,然后使用该备份以使用现在小得多的事务日志还原到目标计算机.

选项2:

或者,也许在外部源的接触可以将它发送给你之​​前收缩事务日志(如果日志很大,由于很多大的交易,这可能无法正常工作).

有关收缩日志文件的命令的文档,请参见此处.

  • 出于兴趣,有没有人知道*为什么*MS没有提供只恢复数据的选项,而不是事务日志?我认为恢复数据库中的TL如此大的唯一原因是.bak文件必须包含一个标记,表示"请在恢复时为TL保留这么多空间",并且似乎没有恢复过程原则上不应该忽略这样一个标志的逻辑原因.所以我很感兴趣为什么那个选项不存在.对于我特定的.bak文件,TL所需的空间为50GB,尽管这几乎完全是空的空间. (6认同)

Pon*_*ife 4

对于 ServerFault 或 DBA 站点来说,这确实是一个问题,但简短的答案是否定的,您只能恢复完整的 .bak 文件(不考虑文件组或分段恢复等“异国情调”场景)。你没有说“巨大”是什么意思,但磁盘空间很便宜;如果添加更多确实不是一个选择,那么您需要找到一种从外部源获取数据的替代方法。