问题
我一直在运行一个特别大的查询,生成数百万条要插入表中的记录。每次运行查询时,都会收到错误报告,表明事务日志文件已满。
我设法让测试查询以减少的结果集运行,并使用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。
当问题首次出现时,文件增长到较低的值,但是我减少了同一服务器上其他日志文件的大小,这似乎允许此事务日志文件进一步增长与减少相同的量其他文件。
我现在已经没有了解如何解决这个问题。如果有人对该做什么有任何建议或见解,将不胜感激。
答案 0 :(得分:0)
首先,您希望尽可能避免自动增长;自动增长事件是巨大的性能杀手。如果您有100GB可用,为什么不将日志文件大小更改为20GB(暂时解决此问题)。我的策略一直是使用为特定MDF / NDF / LDF文件分配的90%以上的磁盘空间。没有理由不这样做。
如果您正在使用SIMPLE恢复SQL Server应该管理返回未使用空间的任务,但有时SQL Server不能很好地完成任务。在运行查询之前,请检查可用的免费日志空间。您可以通过以下方式执行此操作: