32-разрядный системный DSN ODBC32 в Windows 10, по-видимому, не может получить доступ к сети

602
LSerni

У меня есть приложение, которое работает правильно на большинстве моих машин здесь.

Два из них перестали работать без причины, которую я мог понять (те же обновления, что и у всех остальных, те же настройки сети, то же самое оборудование ...).

Проблема в том, что соединение с источником данных не удается. Сервер является сервером MySQL в другом месте. В начале я думал, что это проблема с DNS ( это DNS, а не DSN ), потому что ошибка говорит, что он не может найти my.server.com .

Странно то, что из %SYSROOT%/SysWOW64/ODBCAD32.exeисточника данных коннектора MyODBC указан системный DSN с правильным именем (там же, как и на других компьютерах). И это работает, на том же ПК, где приложение не работает. Находит базы данных, позволяет выбрать правильную - все.

Чтобы исключить DNS, я заменил имя на правильный IP-адрес; DNS-запрос больше не выполнялся, но сразу после этого я получил другую ошибку - ошибка Winsock 10022, неверный сокет. Что говорит мне, что ошибка DNS, вероятно, была связана с тем, что приложение не может подключиться к сокету DNS-сервера.

Так что я догадался, что это как-то брандмауэр. Я пытался отключить его как из графического интерфейса, так и из командной строки (netsh advfirewall все профили отключены), но безрезультатно. Пробовал войти в журнал отладки pfw, там ничего нет (соединение даже не запускается). Трафик на TCP-порт MySQL 3306 отсутствует - он останавливается первым.

На этом компьютере не установлены антивирусы, и на нем есть все обновления (как и на всех других компьютерах).

Обширный поиск в Google ничего не дал - приложение находится на общем ресурсе UNC (так же, как и на других машинах, на которых оно работает), но даже если я скопирую его на локальный диск, на этих двух оно все равно не будет работать.

В чем может быть дело?

0

1 ответ на вопрос

0
LSerni

Оказывается, я думал, что проверил это, но мой тест был ошибочным.

Я обнаружил, в начале моего поиска в Интернете, что

If the application using ODBC32 resides on a network drive, and the user has no write access to the root of that drive, then ODBC cannot establish a network connection.  (Worth 1500 WTF points) 

Поэтому я скопировал приложение и все остальное на рабочий стол. И все равно это не сработало.

То, что я забыл - не обращая внимания на то время - это то, что эти два компьютера имеют свои профили пользователей на удаленном сервере .

Угадай, что. Корень сервера не был доступен для записи.

И это, конечно, 1, помешало ODBC установить сетевое соединение.


(1) «конечно», в мире, где MIDI-файл не открывается из-за ошибки, которая очищается при открытии Microsoft Word. Это случилось со мной почти двадцать лет назад; Я все еще надеюсь, что когда-нибудь смогу забыть это.

Похожие вопросы