【发布时间】:2013-09-11 13:09:26
【问题描述】:
如果查询返回任何记录,我有一条 SQL 语句会更新表中的记录。查询仅在需要更新时才返回记录。当我在查询上运行选择时,我没有得到任何记录,所以当更新运行时应该没有更新记录。
我遇到的问题是存储过程中的查询不会完成,因为在查询完成之前事务日志已填满。我不担心交易日志现在会填满。
我的问题是,如果没有记录被更新,那么为什么要写入事务日志?
【问题讨论】:
-
桌上有
UPDATE触发器吗? -
您遇到什么错误?您确定它正在填充事务日志而不是 tempdb?
-
哪些操作会填满日志?具体来说,使用
SELECT ... FROM fn_dblog(...)查询时会出现什么样的LOP_XXX操作? -
可能 tempdb 的日志已满。请发布完整的错误消息。
-
这可能是由于执行时的查询计划不正确。如果您的表被索引,请确保您的查询设置为使用它们,如果没有,您应该考虑在查询中的列上添加一些非聚集索引。
标签: sql sql-server transaction-log