Назад | Перейти на главную страницу

ODBC: проблема с удалением системного DSN

У меня есть коллега, у которого есть два DSN с одинаковыми именами - один пользовательский DSN, а другой системный. Он удалил пользовательский DSN, но не может удалить системный DSN в ODBCad32.

Кто-нибудь сталкивался с этим раньше?

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

Если у вас уже есть административный доступ, вам нужно будет проверить безопасность ключа и при необходимости стать владельцем.

Я видел это, когда конечная точка (.) Была вставлена ​​в какой-то момент в разделе реестра, поддерживающем DSN, и он не мог редактировать или удалять. Это Oracle DSN? Если нет, то какой драйвер он использует?

Сначала проверьте, можете ли вы добавить или удалить другой DSN или вся панель стала бесполезной.

Проверьте, какую панель вы используете. Иногда бывает 2 копии панели в C:\Windows\SysWOW64\odbcad32.exe (на удивление 32-битный) и C:\Windows\system32\odbcad32.exe (что удивительно, 64-битный). Попробуйте оба.

Затем попробуйте найти запись в HKLM/Software/ODBC. Вы можете отредактировать или удалить запись там.

Пользовательские DSN отображаются на обеих панелях, но только администратор, соответствующий битовости, может удалить или изменить один.

Я только что обнаружил проблему с драйверами Jet, которая, возможно, применима к другим драйверам ODBC: если вы создаете или изменяете системный DSN, и есть пользовательский DSN с тем же именем, то параметры реестра System DSN являются неполными - я вместо этого они попадают в конфигурацию User DSN.

Системный DSN работает, потому что (по крайней мере, Jet) драйверы ищут как записи реестра System DSN (в HKLM), так и в User DSN (в HKCU). Если вы удалите User DSN, вы останетесь с неполным System DSN - и ваш драйвер ODBC может быть недостаточно надежным, чтобы справиться с этим.

FWIW, Дэн Кенигсбах