0

如果查询返回任何记录,我有一个 SQL 语句会更新表中的记录。查询仅在需要更新时才返回记录。当我在查询上运行选择时,我没有得到任何记录,所以当更新运行时应该没有更新记录。

我遇到的问题是存储过程中的查询不会完成,因为在查询完成之前事务日志已填满。我不担心交易日志现在会填满。

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

4

2 回答 2

0

看起来问题出在加入中。加入这么多记录太累了,tempdb 已经填满了驱动器上没有更多空间的地步。

于 2013-09-12T18:11:47.530 回答
0

在解决这个问题之前,我们需要更多信息......

Remus 有一个好主意来查看日志文件中的条目。

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

使用事务日志备份清除日志文件。这是假设恢复模式为 FULL 且已完成 FULL 备份。

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

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

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

祝你好运。

于 2013-09-11T13:57:06.273 回答