Я использую Access 2010 FE и SQL Server 2005 BE.
Я могу успешно выполнить сквозные запросы к моему SQL Server, используя соединения без DSN.
На этапе тестирования мне иногда требуется восстановить базу данных, чтобы вернуться к исходным записям, чтобы я мог повторно выполнить свои запросы. Я обнаружил, что когда я запускаю сквозной запрос, он создает активное соединение на моем SQL Server. Я вижу соединение через консоль управления SQL Server в разделе УПРАВЛЕНИЕ | Журналы SQL Server | Монитор активности, выберите просмотр процессов. Там я вижу, какой идентификатор процесса используется и кто его использует, когда я выполняю свой сквозной запрос.
Теперь для меня единственный способ восстановить базу данных - это УБИТЬ ПРОЦЕСС, например. Активное соединение
Теперь, когда я восстановил свою базу данных и перезапустил сквозной запрос, я получил сообщение ODBC - Call Failed. Я попытался запустить процедуру, чтобы обновить мои querydefs, но безрезультатно, я все равно получу окно сообщения ODBC-- Call Failed при нажатии на эти объекты.
Теперь есть два варианта решения этой проблемы, которые в любом случае я считаю не удобными для пользователя.
- Перезапустите приложение Access
- Подождите примерно 5-10 минут, чтобы повторно запустить сквозной запрос
Я создал функцию для перехвата моих ошибок ODBC, и вот что появляется:
Номер ошибки ODBC: 0
Описание ошибки: [Microsoft] [Драйвер ODBC SQL Server] Ошибка канала связи
Номер ошибки ODBC: 3146
Описание ошибки: ODBC - сбой вызова.
Так что, если по какой-то причине мне нужно перезапустить свой SQL-сервер или завершить процесс (Active Connection) на моем SQL-сервере, в то время как приложение Access в настоящее время подключено через ODBC, объекты, созданные через ODBC, не будут работать должным образом, пока я не выполню 2 решения, как указано выше.
Может кто-нибудь пролить совет по решению? Я ценю любое понимание.