2012-09-12 170 views
0

我们有一个开发人员使用freetds使用pymssql连接到SQL Server。他的脚本根据MySQL数据库中的值动态生成SQL插入查询。SQL中来自pymssql回滚的事务

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

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

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

编辑: 从探查器复制出来的代码在SSMS中使用相同的用户正常工作,并且没有触发器。

[第二编辑]: SQL事件探查器里面我看到下eventsubtype“回退” A“TransactionLog”条目,但是没有一个TM:回滚陈

+1

是否检查过表中是否存在导致回滚的触发器?你是否直接从SSMS中的分析器运行查询并查看会发生什么? – HLGEM

+0

正确的是,表格中没有触发器,当我将代码粘贴到SSMS中时,它使用相同的用户名也无妨。感谢您的输入! –

回答

0

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

2

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

+0

Autocommit,这就是我一直在寻找的。谢谢,我现在将研究并让每个人都知道。如果有人有其他想法,让我知道。谢谢! –