在另一个SQL Server上执行备份时,事务日志文件的大小会保留下来

时间:2019-02-21 19:53:48

标签: sql-server transaction-log

我们的生产服务器具有与.ldf文件关联的大型.mdf文件(300 gb)。在DEV服务器上,我们会不时使用生产备份来还原DEV数据库。由于我们的DEV服务器应该没有与其关联的许多事务,因此.ldf文件的大小也为300 gb。我将.ldf文件缩小为50个演出。从生产备份还原后,DEV .ldf文件会再次增长吗?

3 个答案:

答案 0 :(得分:4)

还原数据库备份时,数据库和日志文件的大小将与原始数据库的大小相同。因此,如果prod中的文件大小为300 GB,则将其还原到另一个数据库/服务器时将为300 GB。将prod数据库备份还原到开发环境后,通常会做两件事-缩小日志文件大小,并将恢复模型设置为SIMPLE(是否执行恢复取决于您的需求/要求)。

由于您将文件大小减小到50 GB,由于许多原因,它可能会增长到超过50 GB,但最值得注意的是:

  • 您创建的事务会生成大量日志
  • 您具有完整的恢复模型,并且生成了大量日志,并且从不备份日志
  • 您启用某种复制功能(复制,CDC等),并且从不运行logreader代理。

答案 1 :(得分:1)

  

从生产还原后,DEV .ldf文件是否会再次增长   备份?

是的,如果您的生产数据库日志文件仍然具有这样的大小-300 GB,则dev上的数据库将再次具有该日志文件。

我们不知道您的实时数据库的基准是什么。

但是,如果您的生产数据库没有常规的繁琐的DML操作导致长时间运行的事务,请考虑将生产日志文件的大小减小到较小的大小,例如50 GB。

此外,这种减少将显着减少还原时间,因为LDF文件将在RESTORE开始写入实际数据之前在内部清零。这意味着SQL Server首先必须创建300 GB的文件并在其中写入零。与日志文件相比,数据文件可以从“即时文件初始化”中受益,并且如果将SQL Server实例服务帐户正确配置为具有足够的权限,则可以跳过这种归零。

否则,每次当您还原到开发环境时,都需要执行以下维护任务:

USE yourDev
ALTER DATABASE yourDev SET RECOVERY SIMPLE
-- assumption: only one ldf in db
DBCC SHRINKFILE(2, 1024)

答案 2 :(得分:0)

您可能有正在运行的后台任务,或者有很多打开(长时间运行)的事务,这些事务阻止了日志的备份和收缩。我敢打赌,您的新机器也会发生同样的情况。您需要找出导致事务日志减少的原因。您不必自己收缩它。