Что вызывает исключение System.AccessViolationException при доступе к значению поля ADODB? - PullRequest
0 голосов
/ 20 апреля 2010

Я подключаюсь к базе данных PostgreSQL из веб-службы .Net (оба на компьютере с Windows XP). В последнее время на нескольких разных компьютерах мы получали System.AccessViolationException ошибок.

Одна трассировка стека, которую я смог получить, показала, что это происходило, когда я взял ADODB.recordset и получил значение поля. например

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

Это не всегда терпит неудачу; это редко терпит неудачу. Мы запустили memtest на одном из компьютеров и не нашли никаких проблем.

В чем может быть проблема? Если это драйвер, каковы мои варианты?

1 Ответ

0 голосов
/ 14 марта 2013

Первое, что нужно сделать, это попытаться обновить провайдера ADODB (иногда его называют драйвером). Это может представлять собой редкую ошибку, которая могла быть исправлена. Однако тот факт, что он редко дает сбой, является для меня чем-то вроде красного флага и наводит на мысль о некоторой проблеме параллелизма. Это многопоточное приложение? Что другие темы делают в то время? Возможно ли, что это состояние гонки?

Вторым, что нужно проверить, было бы то, могут ли некоторые значения постоянно вызывать сбой программы. Может быть, в байтах есть встроенные нули или что-то еще?

Скорее всего, это проблема с драйвером. Если вы видите любую проблему, которая похожа, это всегда место для начала.

...