如果查询返回任何记录,我有一条SQL语句更新表中的记录。查询仅在需要更新时才返回记录。当我在查询上运行select时,我没有记录,因此当更新运行时,应该没有更新记录。
我遇到的问题是存储过程中的查询无法完成,因为在查询完成之前,事务日志已填满。我现在不关心事务日志的填写情况。
我的问题是,如果没有更新记录,那么为什么要将任何内容写入事务日志?
答案 0 :(得分:0)
我们需要更多信息才能解决这个问题......
Remus非常了解日志文件中的条目。
执行DBCC SQLPERF(logspace)将为您提供日志文件的完整程度。
使用事务日志备份清除日志文件。这假设恢复模型已满并且已完成完整备份。
重新运行更新存储过程。查看事务日志文件条目。
存储过程和表定义的副本会很棒。在执行期间寻找可能填充日志的其他进程(sp_who2)是另一个值得关注的好地方。
任何可能导致更新,删除或插入的触发器都可以添加到Martin建议的日志文件大小。
祝你好运。答案 1 :(得分:0)
看起来问题出在加入中。它试图加入如此多的记录,以至于tempdb已经填满了驱动器上没有更多空间的地步。