Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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
Sql server Sql Server设置最大文件大小导致事务失败_Sql Server - Fatal编程技术网

Sql server Sql Server设置最大文件大小导致事务失败

Sql server Sql Server设置最大文件大小导致事务失败,sql-server,Sql Server,我有一个日志文件大小为700 MB的数据库。现在我已将其最大文件大小固定为1GB。 当达到1 GB时,事务失败。原因是“数据库的事务日志已满。要了解日志中的空间无法重用的原因,请参阅sys.databases中的log\u reuse\u wait\u desc列” 如果我取消选中日志文件的自动增长,情况也是如此 当我检查sys.databases中的log\u reuse\u wait\u desc列时,它显示“Active\u Transaction” 我无法理解为什么Sql server没

我有一个日志文件大小为700 MB的数据库。现在我已将其最大文件大小固定为1GB。 当达到1 GB时,事务失败。原因是“数据库的事务日志已满。要了解日志中的空间无法重用的原因,请参阅sys.databases中的log\u reuse\u wait\u desc列”

如果我取消选中日志文件的自动增长,情况也是如此

当我检查sys.databases中的log\u reuse\u wait\u desc列时,它显示“Active\u Transaction”

我无法理解为什么Sql server没有保持最大文件大小限制。为什么它不能删除旧日志或类似的内容来保持最大文件大小。 它是如何工作的


< >我想限制日志文件的大小,在任何情况下都不超过1 GB。

这里有一些事情需要考虑,特别是如果您想将日志文件大小限制为1GB。
  • 如前所述,您需要理解其中的差异 在三种恢复模式之间。进行日志备份是一项关键任务 使用完全恢复模式时。然而,这只是问题的一部分 问题日志备份只截断日志的非活动部分, 因此,事务可以用1GB+的数据填充日志文件, 然后你就和现在一样了。。。即使您使用的是简单恢复模式(日志备份在这里也帮不上忙!)
  • 在理想情况下,由于这个问题,您不会以这种方式限制日志文件。如果可能的话,你想让它自动增长,这样,理论上,它可以填满磁盘
  • 事务日志管理本身就是一门科学。Kimberly Tripp对如何管理事务日志吞吐量提出了一些非常好的建议
  • 这将使您能够更好地管理事务日志,并有助于更好地为大型事务分配日志文件
  • 如果你读过所有的东西,你仍然需要限制事务日志的增长,那么你需要考虑批量更新大的结果集。这将允许您一次更新1000行,这意味着只有1000条记录写入日志。SQL Server使用,因此为了完成事务,您首先需要在事务日志中有足够的空间来写入所有详细信息。如果使用简单的恢复模型,此预写日志将自动截断,这意味着您不需要备份日志。因此,一次写入1000条记录(例如)所造成的问题比插入1000000条记录(例如)所造成的问题要小
  • 提供一本免费的电子书来帮助你的方式

    编辑:
    另外,我刚刚读了你上面的评论。。。如果处于完全恢复模式,则必须执行日志备份,否则sql server将无法从日志中恢复空间,并将继续写入日志,导致日志扩展!但是请注意,您必须有完整备份才能使事务日志备份生效。如果SQL Server没有初始还原点(即完全备份),则无法备份日志。

    然后阅读、和进行日志备份之间的差异。如果您的恢复模型已经很简单,并且/或者您已经在进行日志备份,但它仍然不会缩小,那么您就遇到了一个更有趣的问题。谢谢您提供的信息。我的数据库是完全恢复模式。如果设置了文件大小,我无法理解sql为什么不删除旧日志。经过如此多的研发,我认为保持日志文件大小在限制范围内的最佳方法是在10到15分钟后创建顺序备份。这样,基本文件将始终处于其最大大小之下。其他想法也受欢迎。