【问题标题】:Python code causes SQL server transaction log to increase exponentiallyPython代码导致SQL server事务日志成倍增长
【发布时间】:2018-04-05 08:04:05
【问题描述】:

我有一个 python 脚本来执行一个存储过程来清除数据库中的表。该 SP 进一步调用另一个 SP,该 SP 对数据库中的每个表都有删除语句。像下面这样 -

Python 调用 - 存储过程 Purge_DB

Purge_DB 调用 - 存储过程 Purge_Table

Purge_Table 具有从每个表中删除数据的定义。

当我运行此 python 脚本时,事务日志呈指数增长,并且在运行此脚本 2-3 次时,我收到事务日志已满错误。 请注意,删除发生在事务中。

开始传输

        EXEC (@DEL_SQL) 


    COMMIT TRAN

之前我使用 VB 脚本执行相同的 SP,但从未遇到任何与事务日志相关的问题。

Python 是否有不同的方式来创建事务日志? 为什么 Python 的日志大小比 VB 脚本大得多?

【问题讨论】:

    标签: python sql-server transaction-log


    【解决方案1】:

    现在已经解决了。

    Python 在调用 execute 方法时启动一个事务,并且该事务保持打开状态,直到我们显式调用 commit() 方法。由于对 100 多个表调用了此清除 SP,因此填充了事务日志,直到在 python 代码中关闭事务,因此,由于这项工作,它已满。

    我已将 pyodbc 的 autocommit 属性设置为 true,它现在将在每个 SQL 语句作为该连接的一部分执行时自动提交它。请参阅此处的文档 -

    https://github.com/mkleehammer/pyodbc/wiki/Database-Transaction-Management

    【讨论】:

      猜你喜欢
      • 2017-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多