У нас есть база данных Access, перенесенная из Access 97 в Acces 2007 с некоторыми связанными таблицами в базу данных SQL Server 2008.
Мы используем File DSN в ODBC Administrator. Тесты соединения там работают нормально. Фактически, у нас есть основная форма в приложении Access 2007, которая всегда показывает данные правильно.
Проблема возникает, когда мы выполняем задачу, которая выполняет следующий вызов:
Dim dbs As Database<br>
Dim rstAppend As Recordset<br>
Set dbs = CurrentDb<br>
Set rstAppend = dbs.OpenRecordset(strAccessTable, dbOpenDynaset, dbSeeChanges)
OpenRecordset выдает ошибку 3151 и возникает случайным образом, но встречается довольно часто. Это спорадический. Когда мы не получаем ошибку, задача отлично работает.
- Так бывает не всегда, в основном у нас все хорошо.
- Когда это происходит, это происходит для всех последующих задач. Мы должны закрыть и снова открыть базу данных Access и помолиться доброму Господу, чтобы она работала.
- Иногда обновление таблиц в менеджере связанных таблиц решает проблему, а другие - нет.
- Иногда при обновлении менеджера связанных таблиц мы получаем ошибку «ODBC - Call Failed». Удаление файла DSN и создание нового решает проблему.
- Мы пробовали использовать два разных драйвера (SQL Server и SQL Server Native Client 10), и в обоих случаях проблема остается.
- Также мы попытались поместить файл доступа на тот же компьютер, что и SQL Server, и проблема остается.
- Мы увеличили время ожидания ODBC для всех запросов с 60 до 180 секунд, но проблема все еще остается.
- Нам не нужно ждать, чтобы увидеть ошибку, она появляется менее чем за одну секунду после выполнения задачи.
Мы были бы очень рады, если бы кто-нибудь помог нам найти решение этой проблемы.