我正在使用带有命令链的.NET DB2驱动程序。
我首先打开一个 DB2Connection 并启动一个事务。然后我在我的连接上调用 DB2Connection.BeginChain 来启动批量插入。我用0作为 DB2Command.CommandTimeout 执行一堆准备好的语句。最后,我调用 DB2Connection.EndChain 并提交事务。
我希望有些插入因重复键错误而失败。我通过捕获 DB2Exception 并检查 DB2Exception.Errors 集合来捕获它。我知道哪一行失败了,因为我可以查看 Errors 集合中的 DB2Error.RowNumber 。
问题在于,当我调用 DB2Connection.EndChain 并且受影响的行号为负时,有时会捕获 DB2Exception 。
[IBM] [DB2] SQL0952N由于中断,处理被取消。 SQLSTATE = 57014
在DB2文档中搜索此错误似乎表明查询已超时。我没有看到任何与链接有关的信息。整个连锁过程是否超时或是个别查询的问题?如果是晚些时候,为什么我没有得到有效的行号?如果我的 DB2Connection.ConnectionTimeout 为0且我的 DB2Command.CommandTimeout 为0,为什么我会超时?