0

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

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

我们没有使用 XACT_ABORT_OFF 因为我没有看到“将数据库上下文更改为”受到它的影响。

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

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

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

4

2 回答 2

2

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

于 2012-09-12T20:12:28.530 回答
0

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

于 2012-09-12T23:01:00.657 回答