为什么我的SQL事务日志文件不会自动增长?

时间:2017-01-03 17:53:25

标签: sql sql-server tsql transaction-log

问题

我一直在运行一个特别大的查询,生成数百万条要插入表中的记录。每次运行查询时,都会收到错误报告,表明事务日志文件已满。

我设法让测试查询以减少的结果集运行,并使用SELECT INTO而不是INSERT作为预建表。这一减少的结果集生成了一个20 gb的表,838,978,560行。

当尝试INSERT到预构建的表时,我也尝试使用它有和没有Cluster索引。都失败了。

服务器设置

服务器正在运行SQL Server 2005(Full not Express)。 正在使用的dbase设置为SIMPLE以进行恢复,并且文件所在的驱动器上有可用空间(大约100 gb)。

事务日志文件设置的文件增长量为250 mb,最大值为2,097,152 mb。

日志文件似乎按预期增长,直到达到4729 mb。

当问题首次出现时,文件增长到较低的值,但是我减少了同一服务器上其他日志文件的大小,这似乎允许此事务日志文件进一步增长与减少相同的量其他文件。

我现在已经没有了解如何解决这个问题。如果有人对该做什么有任何建议或见解,将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先,您希望尽可能避免自动增长;自动增长事件是巨大的性能杀手。如果您有100GB可用,为什么不将日志文件大小更改为20GB(暂时解决此问题)。我的策略一直是使用为特定MDF / NDF / LDF文件分配的90%以上的磁盘空间。没有理由不这样做。

如果您正在使用SIMPLE恢复SQL Server应该管理返回未使用空间的任务,但有时SQL Server不能很好地完成任务。在运行查询之前,请检查可用的免费日志空间。您可以通过以下方式执行此操作:

  1. 右键单击数据库>转到任务>收缩>文件。
  2. 将类型更改为" Log"
  3. enter image description here

    这将帮助您了解您拥有多少未使用的空间。您可以在释放未使用的空间之前设置"重新组织页面>收缩文件"从0开始,您还可以使用CHECKPOINT释放未使用的空间;这可能是您的查询运行之前的第一步。