Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LDF文件在事务处理阶段继续增长非常大-SQLServer2005_Sql_Sql Server 2005_Logging_Transaction Log_Ldf - Fatal编程技术网

LDF文件在事务处理阶段继续增长非常大-SQLServer2005

LDF文件在事务处理阶段继续增长非常大-SQLServer2005,sql,sql-server-2005,logging,transaction-log,ldf,Sql,Sql Server 2005,Logging,Transaction Log,Ldf,我们有6个步骤,将表从一个数据库复制到另一个数据库。每个步骤都在执行一个存储过程 从目标数据库中删除表 在目标数据库中创建表 复制前收缩数据库日志 将表从源复制到目标 收缩数据库日志 备份决策数据库 在第4步中,我们的事务日志ldf文件变得非常大,现在我们必须不断增加sql server上的最大大小,很快,我们相信它可能会耗尽服务器上的所有资源。有人建议,在我们的脚本中,我们提交每个事务,而不是等到最后才提交事务 有什么建议吗?我假设您正在移动大量数据。此问题的典型解决方案是将副本分成更小的行。

我们有6个步骤,将表从一个数据库复制到另一个数据库。每个步骤都在执行一个存储过程

从目标数据库中删除表 在目标数据库中创建表 复制前收缩数据库日志 将表从源复制到目标 收缩数据库日志 备份决策数据库 在第4步中,我们的事务日志ldf文件变得非常大,现在我们必须不断增加sql server上的最大大小,很快,我们相信它可能会耗尽服务器上的所有资源。有人建议,在我们的脚本中,我们提交每个事务,而不是等到最后才提交事务


有什么建议吗?

我假设您正在移动大量数据。此问题的典型解决方案是将副本分成更小的行。这使得事务日志的命中率更小。我认为这将是首选答案

我看到的另一个答案是使用大容量复制,它将数据写入文本文件,并使用大容量复制将其导入目标数据库。我看到很多帖子都推荐这个。我还没试过


如果目标表的模式没有更改,您是否可以截断目标表中的数据,而不是删除并重新创建

能否将此过程的数据库恢复模型更改为


然后,不要在目标位置创建空表,而是执行SELECT INTO来创建它们。一旦构建了这些表,就可以修改这些表以添加索引和约束。这样进行批量复制将大大降低您的日志记录要求。

感谢您的回复。我们还没有想到这一点,但考虑到这一点,是截断数据而不是丢弃数据,节省空间吗?感谢您的回复。大容量日志记录是我们在讨论中滑过的东西,但不确定作为我们部门的最佳日志记录实践,什么数据才是真正重要的。大容量日志记录模式和完全日志记录之间几乎没有区别。这就是为什么我建议使用SELECT INTO的原因,因为它是模式之间存在差异的为数不多的命令之一。在否决投票之前,阅读完整的答案。去阅读这篇文章和相关的文章。收缩事务日志文件是您能做的最糟糕的事情。