我有一个基于Excel VBA / ADO的应用程序,它使用ADO接口连接到SQL服务器。 我想知道在事务中间连接丢失时错误处理策略是什么。
交易是使用
开始的con.BeginTrans
使用
提交或回滚事务con.CommitTrans
或
con.RollbackTrans
其中 con 是使用以下代码创建的类<strong> ADODB.Connection 的对象
Const sConnectionString as String ="some valid connection string beleive me"
Const sCatalog as String ="my data base name"
Set con= New ADODB.Connection
With con
.ConnectionTimeout = 30
.Provider = "sqloledb"
.ConnectionString = sConnectionString
.Open
.DefaultDatabase = sCatalog
End With
我传递细节以处理多次重试,以防它第一次没有成功(但这也是实现的),这不是在这种情况下困扰我的。
如果 con.BeginTrans 和 con.CommitTrans 之间的连接丢失,我无法使用 con.RollbackTrans 。 参考VBA ADO文档说
如果在事务进行过程中Connection对象超出范围,ADO会自动回滚事务
我无法关闭连接,因为ADO抱怨正在运行的事务似乎与参考文档相矛盾。
那么可能有哪些选择? 创建一个新的 ADODB.Connection 实例对象?