CMN_1022: [FreeTDS][SQL Server]The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION

本文介绍了解决Informatica与SQL Server在数据加载过程中出现的自动提交问题的方法。通过调整数据连接对象的设置,成功避免了因Informatica默认的自动提交行为与SQL Server的事务管理机制不兼容而导致的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前一直把Oracle作为Informatica的目标库,一直很正常,没有出现什么问题,前几天有需求需要把sqlserver作为目标库,数据连接采用的odbc,当按往常配置好映射、会话、工作流后,执行如下报错:


消息代码: CMN_1022
消息: Database driver error...
CMN_1022 [
[FreeTDS][SQL Server]The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.
Database driver error...
Function Name : Commit
Database driver error...
Function Name : AutoCommitOff]


度娘谷歌各种查,也查阅了Informatica的问题库(https://search.informatica.com/KBHome)和微软的sqlserver社区,没有找到任何线索。


看来只能从报错信息分析,错误消息是说Informatica在执行完映射逻辑并提交目标库数据后,会自动追加COMMIT命令,以便完成交付任务,但此时却报由COMMIT而没有相对应的BEGION,建议关闭AutoCommit异常,说明问题应该出现在[AutoCommit]上,即系统Informatica隐式自动COMMIT上。


系统隐式自动COMMIT对于Oracle来说没有任何问题,因为Oracle需要显示的COMMIT以完成事务,但sqlserver既有显示BEGION COMMIT类型,同时也有自己的隐式COMMIT


问题就出现在这里,Informatica自己的隐式COMMIT和sqlserver的两种模式都不匹配,与第一种比,少了BEGION,与第二种多了COMMIT,因此就报了关键字匹配的错误。


找到问题点,就好处理了,只要匹配sqlserver一种就可以,由于没有找到屏蔽Informatica自己COMMIT的控制项,我们采用了在数据连接对象定义的Connection Environment SQL属性里填写“BEGIN TRANSACTION”值方式,配置图如下:

 

至此困扰两天的问题得以解决!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值