sql server update影响0条记录,但填写事务日志

时间:2013-09-11 13:09:26

标签: sql sql-server transaction-log

如果查询返回任何记录,我有一条SQL语句更新表中的记录。查询仅在需要更新时才返回记录。当我在查询上运行select时,我没有记录,因此当更新运行时,应该没有更新记录。

我遇到的问题是存储过程中的查询无法完成,因为在查询完成之前,事务日志已填满。我现在不关心事务日志的填写情况。

我的问题是,如果没有更新记录,那么为什么要将任何内容写入事务日志?

2 个答案:

答案 0 :(得分:0)

我们需要更多信息才能解决这个问题......

Remus非常了解日志文件中的条目。

执行DBCC SQLPERF(logspace)将为您提供日志文件的完整程度。

使用事务日志备份清除日志文件。这假设恢复模型已满并且已完成完整备份。

重新运行更新存储过程。查看事务日志文件条目。

存储过程和表定义的副本会很棒。在执行期间寻找可能填充日志的其他进程(sp_who2)是另一个值得关注的好地方。

任何可能导致更新,删除或插入的触发器都可以添加到Martin建议的日志文件大小。

祝你好运。

答案 1 :(得分:0)

看起来问题出在加入中。它试图加入如此多的记录,以至于tempdb已经填满了驱动器上没有更多空间的地步。