【发布时间】:2013-09-10 13:51:53
【问题描述】:
我正在通过 C++ 使用 ADO,假设我在连接断开时通过 ADO 开始了一个事务。
我希望放弃我的数据库更改并关闭我的 ADO 数据库连接对象,以便返回到另一个可以显示错误消息的代码模块(不让这个模块处于狡猾的状态)。
问题是:
1) 我无法关闭数据库连接,因为抛出错误 adErrInTransaction (0x800a0cae)(在事务中无法显式关闭连接对象)
2)我无法回滚事务,因为抛出了错误 0x8000ffff(灾难性故障,....连接失败)
这似乎是第 22 条问题。如果事务没有启动,那么在 ADO 连接上调用 Close 会成功,但不幸的是,在事务打开时,我似乎被卡住了!
是否是唯一的解决方案来记录它在事务中失败的事实,以便在恢复数据库连接时,我可以在尝试其他任何操作之前完成回滚?
如果相关的话,这已使用 SQLServer 2008 进行了测试,但我并不真正想要特定于 SQLServer 的解决方案。
【问题讨论】:
标签: c++ transactions database-connection ado rollback