0

我正在从 .Net Web 服务(都在 Windows XP 机器上)连接到 PostgreSQL 数据库。最近有几次,在几台不同的计算机上,我们收到了System.AccessViolationException错误。

我能够获得的一个堆栈跟踪表明它是在我获取 ADODB.recordset 并获取字段的值时发生的。例如

Dim rs as ADODB.Recordset = 'initialize recordset via a query to database
MsgBox(rs("fieldName").Value)

这并不总是失败;它很少失败。我们在其中一台计算机上运行 memtest,没有发现任何问题。

问题可能是什么?如果是司机,我有什么选择?

4

1 回答 1

0

首先要做的是尝试升级 ADODB 提供程序(有时称为驱动程序)。这可能代表某种可能已修复的罕见错误。然而,它很少失败的事实对我来说有点危险,并暗示了某处的某种并发问题。这是一个多线程应用程序吗?当时其他线程在做什么?这可能是一种竞争条件吗?

要检查的第二件事是某些值是否会始终使程序崩溃。也许在字节或其他东西中嵌入了空值?

然而,这很可能是驱动程序的问题。如果您发现任何类似的问题,这始终是开始的地方。

于 2013-03-14T05:43:31.363 回答