Проверка установки драйвера ODBC

Сводка

В этой статье показано, как убедиться, что драйвер Open Database Connectivity (ODBC) установлен, зарегистрирован и настроен правильно на компьютере Windows. Используйте его, если приложение не может подключиться к базе данных, если драйвер ODBC не отображается в администраторе источника данных ODBC или при получении ошибки Data source name not found and no default driver specified (SQLSTATE IM002). Этапы проверки охватывают 32- и 64-разрядные версии администратора источников данных ODBC, имя источника данных (DSN) и записи драйвера в реестре Windows, а также строку подключения, которую приложение передает диспетчеру драйверов ODBC.

Какую копию администратора источника данных ODBC следует открыть?

В 64-разрядных версиях Windows есть две копии администратора источника данных ODBC, а каждая копия управляет драйверами и системными DSN, которые соответствуют его битовости:

  • Для 64-разрядных приложений выберите Windows+ и введите ODBCAD32.EXE или C:\WINDOWS\SYSTEM32\ODBCAD32.EXE.

  • Для 32-разрядных приложений выберите Windows+ и введите C:\WINDOWS\SYSWOW64\ODBCAD32.EXE.

Оба исполняемых файла называются odbcad32.exe, поэтому путь к папке определяет, какой из них открыт. Всегда сопоставляйте инструмент с битами приложения, которое делает подключение. 32-разрядное приложение не может загрузить 64-разрядный драйвер ODBC, а 64-разрядное приложение не может загрузить 32-разрядный драйвер ODBC.

Примеры строк подключения ODBC

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

  • driver={ODBC Driver 18 for SQL Server};server=sqlprod01;database=AdventureWorks;trusted_connection=yes
  • dsn=userdsn1
  • dsn=test;uid=<user name>;pwd=<password>

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

Вторая и третья строки подключения используют DSN, который представляет собой инкапсуляцию этих элементов, хранящихся в реестре. Имя пользователя и пароль не могут храниться в dsN и должны быть явно указаны. Дополнительные сведения об атрибутах DSN см. в разделе Атрибут строки подключения DSN.

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

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

Примечание.

SQL Server Драйвер (sqlsrv32.dll), который поставляется с Windows и драйвером собственного клиента SQL Server (SQL Server Native Client 11.0) не рекомендуется для новой разработки. SQL Server Native Client не входит в состав SQL Server 2022 (16.x) и более поздних версий, а также SQL Server Management Studio 19 и более поздних версий. Для новых подключений используйте драйвер ODBC Microsoft для SQL Server, который можно скачать для Windows, Linux и macOS.

Убедитесь, что драйвер и DSN отображаются в администраторе источника данных ODBC

Используйте администратора источника данных ODBC, чтобы проверить наличие драйверов и доменных имен ODBC. Откройте копию, соответствующую битности приложения, а затем проверьте вкладку "Драйверы" , чтобы узнать, указан ли драйвер. На следующих снимках экрана показаны 64-разрядные и 32-разрядные драйверы:

Снимок экрана: 64-разрядный драйвер.

Снимок экрана: 32-разрядный драйвер.

Если драйвер указан, создайте тестовую dsN на вкладке "Системное DSN " или "Имя пользователя DSN " и запустите тест подключения. Успешный тест подтверждает загрузку драйвера и доступ к серверу. Если драйвер не указан, переустановите драйвер и проверьте разделы реестра, как описано в следующем разделе.

Сведения в реестре о драйвере ODBC и DSN

Сведения о драйверах и dsN хранятся в реестре:

Снимок экрана: сведения о драйвере и доменном имени в реестре.

На 64-разрядных компьютерах перенаправление реестра отделяет 32-разрядную и 64-разрядную информацию для драйверов и системных доменных имен. В Wow6432Node записи реестра хранятся 32-разрядные сведения о драйвере и системном dsN. Пользовательские DSN не перенаправляются, поэтому и 32-, и 64-разрядные средства отображают все пользовательские DSN. Соответствующие ключи:

  • HKEY_LOCAL_MACHINE\SOFTWARE\ODBC (64-разрядные драйверы и системные DSN)
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC (32-разрядные драйверы и системные DSN)
  • HKEY_CURRENT_USER\Software\ODBC (Пользовательские DSN для текущего пользователя)

Подраздел ODBC.INI содержит список всех DSN и подразделов для каждого DSN. В подразделе ODBCINST.INI перечислены все драйверы.

Снимок экрана показывает подразделы ODBC.INI и ODBCINST.INI.

Если возникла проблема при загрузке драйвера через DSN, проверьте подраздел ODBC.INI, чтобы определить, какой драйвер использует DSN.

На снимке экрана показано, как узнать, какой драйвер использует DSN.

Кроме того, убедитесь, что путь к драйверу, указанный в ODBCINST.INI, указывает на DLL-файл, который существует на диске. Запись реестра, ссылающаяся на отсутствующую или перемещенную библиотеку DLL, является распространенной причиной сбоев загрузки после удаления, обновления или очистки файла вручную. Сведения об именах файлов и путях установки драйвера Microsoft ODBC Driver for SQL Server см. в разделе Системные требования, установка и файлы драйвера.

Примечание.

Запись LastUser не влияет на строка подключения. Он используется только при тестировании dsN в администраторе источника данных ODBC.

Устранение ошибки IM002: имя источника данных не найдено и драйвер по умолчанию не указан

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

ERROR [IM002] [Microsoft][ДИСПЕТЧЕР драйверов ODBC] Имя источника данных не найдено и драйвер по умолчанию не указан.

Эта ошибка означает, что диспетчеру драйверов ODBC не удалось определить DSN или имя драйвера в строке подключения. Проверьте следующие элементы в порядке:

  1. Имя DSN в строка подключения соответствует имени DSN, указанному в администраторе источника данных ODBC.
  2. Установлен драйвер соответствующей разрядности. Пользовательский DSN отображается как в 32-разрядной, так и в 64-разрядной версии средства, но подключение завершается ошибкой, если драйвер, на который он ссылается, не установлен для разрядности приложения. Дополнительные сведения см. в разделе "Администратор ODBC", где отображаются 32-разрядные и 64-разрядные доменные имена пользователей.
  3. Системный DSN был создан в инструменте, который соответствует разрядности приложения. Системные DSN перенаправляются в реестре, поэтому системный DSN, созданный в 64-разрядном средстве, недоступен для 32-разрядного приложения.
  4. Область DSN соответствует учетной записи, которая запускает приложение. Пользовательский DSN в разделе HKEY_CURRENT_USER недоступен службе, которая работает под другой учетной записью. Используйте System DSN для служб и веб-приложений.
  5. Имя драйвера в строке подключения без DSN соответствует драйверу, указанному в подразделе ODBCINST.INI.

Даже если путь к драйверу в DSN указан неверно, диспетчер драйверов всё равно может найти его в подразделе ODBCINST.INI по имени драйвера, указанному в разделе реестра ODBC Data Sources.

Если драйвер загружает, но подключение по-прежнему завершается сбоем, проблема обычно связана с сетью, проверкой подлинности или шифрованием, а не проблемой установки. Сведения об этих симптомах см. в разделе "Устранение неполадок с подключением в SQL Server".

Поддержка драйверов ODBC, отличных от Microsoft

Для драйверов ODBC, отличных от Microsoft, поддержка Microsoft ограничена следующими действиями:

  • Проверьте наличие ключей реестра драйвера. Если это не так, переустановите драйвер или обратитесь к поставщику.
  • Проверьте, указывают ли пути на файл DLL, который существует. Если это не так, переустановите драйвер или обратитесь к поставщику.
  • Создайте тестовую dsN и выполните тест подключения.
  • Помогите собрать трассировку Process Monitor (Procmon), чтобы поставщик мог её проанализировать.

Поведение драйвера, дефекты драйверов и логика установки драйверов остаются ответственностью поставщика, создавшего драйвер.

Отказ от ответственности за информацию третьих лиц

Сторонние продукты, о которых говорится в этой статье, производятся компаниями, не зависящими от Microsoft. Корпорация Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, о надежности или производительности этих продуктов.