Как восстановить соединение ODBC после сбоя в MS Access

Есть приложение MS Access с таблицами на MS SQL Server, связанное через ODBC. Когда соединение потеряно, я получаю ошибку ODBC 3146. После физического восстановления соединения я все еще получаю ошибки ODBC 3146. Мне нужно сделать что-то вроде переподключения к серверу. Как я могу сделать это в MS Access?


person host.13    schedule 27.03.2013    source источник


Ответы (2)


Я думаю, все, что вам нужно сделать, это обновить ссылки на таблицы. Вы спрашиваете, как перелинковать таблицы программно? Вы пытались обновить ссылки после отключения и убедились, что это решает проблему? Обновление ссылки в VBA будет выглядеть примерно так

Dim db as Database
Set db = Currentdb()
db.TablesDefs(1).RefreshLink

Возможно, вам придется пройтись по таблицам, чтобы получить индекс. Я не уверен, что он возьмет имя таблицы, но вы можете сначала попробовать это сделать.

person BPCS    schedule 27.03.2013
comment
Спасибо за ответ. Да, это очень полезная информация, но прежде всего мне нужно понять, что именно решает проблему соединения с ODBC - есть ли какой-то специальный метод применения, такой как connection.reconnect или .close, затем .open. В проекте около 180 связанных таблиц, поэтому обновление ссылки на каждую из них займет много времени. Есть ли другой способ восстановить связь? - person host.13; 28.03.2013
comment
Почему у вас 180 связанных таблиц? Если есть таблицы с похожими столбцами, вы можете просто связать эти столбцы с другими таблицами, если я прав. - person user3864563; 05.06.2015

Где находится ваша таблица Access по отношению к вашему SQL Server? Если ваша таблица Access является локальной и вы единственный, кто ее использует, достаточно обновить ссылки на таблицу. Однако, если база данных Access находится на сервере или в другом общем пространстве, где ее используют многие люди, они не смогут получить доступ к таблицам SQL, если вы используете USER DSN. Настройка системного DSN или файла DSN предоставит Access необходимую информацию о том, где находятся таблицы SQL.

person TSS    schedule 27.03.2013