我有一个python脚本来执行一个存储过程来清除数据库中的表。该SP进一步调用另一个SP,该SP对数据库中的每个表都有delete语句。类似于下面的内容-
Python调用-存储过程Purge_DB
Purge_DB调用-存储过程Purge_Table
Purge_Table具有从每个表中删除数据的定义。
当我运行此python脚本时,事务日志呈指数增长,并且在运行此脚本2-3次时,我得到事务日志已满错误。请注意,删除操作发生在事务中。
开始交易
EXEC (@DEL_SQL)
COMMIT TRAN早些时候,我使用VB脚本执行相同的SP,从未遇到任何与事务日志相关的问题。
Python是否有不同的方式来创建事务日志?为什么Python的日志比VB脚本的大得多?
发布于 2018-04-09 18:42:25
现在这个问题已经解决了。
Python在调用execute方法时启动一个事务,该事务保持打开状态,直到我们显式调用commit()方法。由于对100多个表调用了此清除SP,因此事务日志将一直填充,直到python代码中的事务关闭,因此,由于此作业,事务日志将变满。
我已经将pyodbc的自动提交属性设置为true,它现在会在每个SQL语句作为该连接的一部分执行时自动提交该语句。请参阅此处的文档-
https://github.com/mkleehammer/pyodbc/wiki/Database-Transaction-Management
https://stackoverflow.com/questions/49667164
复制相似问题