SQL中的事务来自pymssql自己回滚

时间:2012-09-12 19:54:06

标签: sql sql-server rollback pymssql

我们有一个开发人员使用pymssql连接到SQL Server,后者使用freetds。他的脚本根据MySQL DB中的值动态生成sql insert查询。

在SQL事件探查器中查看语句时,语句会被正确解析并具有正确的开始事务/提交。每当您在SQL中发出USE时,唯一的“用户错误消息”会出现“已更改的数据库上下文...”。批处理完成后,会有一个事务日志事件'rollback',并且删除了所有已插入的记录。

我们没有使用XACT_ABORT_OFF,因为我没有看到'更改数据库上下文'受其影响。

有没有人对此有任何想法或经验?谢谢!

[编辑]: 从分析器中复制的代码在SSMS中使用相同的用户工作正常,并且没有触发器。

[第二次编辑]: 在SQL事件探查器中,我在eventsubtype下看到一个带有'rollback'的'TransactionLog'条目,但是没有TM:Rollback Tran

2 个答案:

答案 0 :(得分:2)

也许连接未正确提交或关闭。检查freetds文档以确保使用正确的使用模式。您还可以检查是否可以在连接上启用自动提交模式。

答案 1 :(得分:0)

因此,经过大量搜索并对自动提交设置进行三重检查后,我们发现2个变量的命名非常接近并且提交错误的变量。有一个mysql和一个pymysql模块,但在这种情况下我们使用的是pymssql,但它是在pymysql中输入的。谢谢所有评论的人。

相关问题