- Известные проблемы с драйвером ODBC в Linux и macOS
- Известные проблемы
- Устранение неполадок с подключением
- Дальнейшие действия
- Как мне найти версию драйвера ODBC в Linux?
- Как мне проверить версию моего драйвера ODBC в Linux?
- Как узнать, установлен ли диспетчер драйверов ODBC в Linux?
- Как мне узнать мою версию драйвера для Linux?
- Как проверить настройки драйвера ODBC?
- Где находится диспетчер драйверов ODBC?
- ODBC — это API?
- Что такое команда Isql?
- Где драйверы WIFI в Linux?
- Как узнать версию моего драйвера?
- Как мне вывести список всех драйверов в Linux?
- Как мне найти свой порт ODBC?
- Как мне получить доступ к ODBC?
- Как создать соединение ODBC для SQL Server в Linux?
- Как мне подключиться к ODBC в Linux?
- ODBC — это API?
- Работает ли ODBC в Linux?
- Как узнать, установлен ли ODBC в Linux?
- Как мне подключиться к SQL Server в Linux?
- В чем разница между JDBC и ODBC?
- Как мне найти свой DSN в Linux?
- Какие порты использует ODBC?
- Как создать ODBC DSN?
Известные проблемы с драйвером ODBC в Linux и macOS
Эта статья содержит список известных проблем в Microsoft ODBC Driver 13, 13.1, 17, 18 for SQL Server на платформах Linux и macOS. В ней также представлены шаги по устранению неполадок с подключением.
Известные проблемы
Дополнительные проблемы будут опубликованы в блоге о драйверах SQL Server.
- Из-за ограничений системной библиотеки Alpine Linux поддерживает меньше кодировок символов и языковых стандартов. Например, недоступна кодировка en_US.UTF-8 . Дополнительные сведения см. в статье musl libc — functional differences from glibc (musl libc — функциональные отличия от glibc).
- В Windows, Linux и macOS символы из кодировки области личных символов (PUA) или символов, определяемых конечными пользователями (EUDC), могут преобразовываться по-разному. Преобразования, выполняемые на сервере в Transact-SQL, используют библиотеку преобразований Windows. Преобразования в драйвере используют библиотеки функций преобразования Windows, Linux или macOS. Каждая из библиотек может давать разные результаты при выполнении преобразований. Дополнительные сведения см. в статье End-User-Defined and Private Use Area Characters (Символы, определяемые конечными пользователями, и символы области личных символов).
- Если кодировка клиента — UTF-8, то диспетчер драйверов не всегда выполняет преобразование из UTF-8 в UTF-16 должным образом. При наличии в строке недопустимых символов UTF-8 сейчас происходит повреждение данных. Символы ASCII сопоставляются правильно. Диспетчер драйверов пытается выполнить такое преобразование при вызове SQLCHAR-версий интерфейса API ODBC (например, SQLDriverConnectA). Диспетчер драйверов не пытается выполнить такое преобразование при вызове SQLWCHAR-версий API ОDВC (например, SQLDriverConnectW).
- Параметр ColumnSize функции SQLBindParameter указывает на число символов в типе SQL, а BufferLength — это число байтов в буфере приложения. Тем не менее, если используется тип данных SQL varchar(n) или char(n) , приложение связывает параметр как SQL_C_CHAR для типа C или SQL_C_VARCHAR для типа SQL, а клиент использует кодировку UTF-8, может появиться ошибка «Усечение данных строки справа» от драйвера, даже когда значение ColumnSize согласовано с размером типа данных на сервере. Эта ошибка возникает по той причине, что в результате преобразования между кодировками символов длина данных может измениться. Например, символ правого апострофа (U+2019) кодируется в CP-1252 как один байт 0x92, а в UTF-8 — как трехбайтовая последовательность 0xe2 0x80 0x99.
Например, если используется кодировка UTF-8 и вы указали значение 1 для BufferLength и ColumnSize выходного параметра в функции SQLBindParameter, а затем пытаетесь получить предыдущий символ, хранящийся в столбце char(1) на сервере (в кодировке CP-1252), то драйвер попытается преобразовать его в трехбайтовую кодировку UTF-8, однако результат не поместится в однобайтовый буфер. Значение ColumnSize сравнивается с BufferLength в SQLBindParameter перед выполнением преобразования между разными кодовыми страницами в клиенте и на сервере. Поскольку ColumnSize для 1 меньше, чем BufferLength , например, для 3, драйвер выдает ошибку. Чтобы избежать этой ошибки, убедитесь в том, что после преобразования данные поместятся в указанный буфер или столбец. Обратите внимание на то, что для типа varchar(n) значение ColumnSize не может превышать 8000.
Устранение неполадок с подключением
Если установить подключение к SQL Server с помощью драйвера ODBC не удается, следующие сведения помогут вам определить проблему.
Чаще всего проблема подключения связана с наличием двух установленных копий диспетчера драйверов UnixODBC. Выполните поиск libodbc*.so* в /usr. Если отображается более одной версии файла, (возможно) установлено несколько диспетчеров драйверов. Приложение может использовать неправильную версию.
Включите журнал соединений, добавив в файл /etc/odbcinst.ini раздел со следующими элементами:
[ODBC] Trace = Yes TraceFile = (path to log file, or /dev/stdout to output directly to the terminal)
Если возникает другой сбой подключения и файл журнала отсутствует, возможно, на компьютере имеются две копии диспетчера драйверов. В противном случае должны выводиться примерно следующие данные журнала:
[ODBC][28783][1321576347.077780][SQLDriverConnectW.c][290] Entry: Connection = 0x17c858e0 Window Hdl = (nil) Str In = [DRIVER=;SERVER=;Trusted_Connection=;WSID=;AP. ][length = 139 (SQL_NTS)] Str Out = (nil) Str Out Max = 0 Str Out Ptr = (nil) Completion = 0 UNICODE Using encoding ASCII 'UTF8' and UNICODE 'UTF16LE'
Если для кодировки символов ASCII используется не UTF-8, например:
UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2LE'
В этом случае установлено больше одного диспетчера драйверов и приложение использует неверный либо сборка диспетчера драйверов была выполнена некорректно.
При использовании драйверов версии до 17.8 у некоторых пользователей macOS возникает следующая ошибка:
(Эта ошибка была устранена в версии драйвера 17.9 и выше.)
[08001][Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [OpenSSL library could not be loaded, make sure OpenSSL 1.0 or 1.1 is installed] [08001][Microsoft][ODBC Driver 17 for SQL Server]Client unable to establish connection (0) (SQLDriverConnect)
Эта ошибка может возникать при установленной библиотеке OpenSSL 3.0. Обычно OpenSSL устанавливается с помощью Brew и содержит двоичные файлы openssl, openssl@1.1, и openssl@3.
Чтобы исправить эту ошибку, измените символическую ссылку двоичного файла openssl на openssl@1.1.
rm -rf $(brew --prefix)/opt/openssl version=$(ls $(brew --prefix)/Cellar/openssl@1.1 | grep "1.1") ln -s $(brew --prefix)/Cellar/openssl@1.1/$version $(brew --prefix)/opt/openssl
Дополнительные сведения об устранении неполадок подключения см. в статьях:
Дальнейшие действия
Инструкции по установке драйвера ODBC см. в следующих статьях.
Как мне найти версию драйвера ODBC в Linux?
Как мне проверить версию моего драйвера ODBC в Linux?
Чтобы определить версию драйверов ODBC в UNIX, выполните следующие действия:
- Войдите на сервер UNIX.
- перейдите в каталог установки ODBC: cd $ INFA_HOME / ODBCx.y / bin.
- Выполните следующую команду, чтобы получить версию драйвера ODBC: 64-разрядная. $ ODBCHOME / bin / ddtestlib $ ODBCHOME / lib / DWsqls27.so. 32-битный.
Как узнать, установлен ли диспетчер драйверов ODBC в Linux?
Если вы видите запись unixODBC, диспетчер драйверов ODBC установлен. Если SQL & gt; Появится запрос, вы успешно установили соединение ODBC с базой данных. Чтобы узнать больше о том, как настроить ODBC в системе Linux, обратитесь к файлу ODBC_README.
Как мне узнать мою версию драйвера для Linux?
Проверка наличия текущей версии драйвера в Linux выполняется путем доступа к приглашению оболочки.
- Выберите значок главного меню и щелкните параметр «Программы». Выберите параметр «Система» и щелкните параметр «Терминал». Это откроет окно терминала или приглашение оболочки.
- Введите «$ lsmod» и нажмите клавишу «Enter».
Как проверить настройки драйвера ODBC?
Как протестировать DSN системы ODBC
- Нажмите кнопку «Пуск» в Windows, а затем «Панель управления». Щелкните «Система и безопасность». Щелкните «Администрирование» в списке утилит. …
- Щелкните DSN, который нужно проверить. …
- Нажмите кнопку «Проверить соединение».
Где находится диспетчер драйверов ODBC?
Windows: Диспетчер драйверов ODBC для Microsoft Windows (odbc32. Dll). Он включен в операционную систему Windows. См. http://support.microsoft.com/kb/110093 для получения дополнительной информации.
ODBC — это API?
Open Database Connectivity (ODBC) — это открытый стандартный интерфейс прикладного программирования (API) для доступа к базе данных.
Что такое команда Isql?
ОПИСАНИЕ. isql — это инструмент командной строки, который позволяет пользователю выполнять SQL в пакетном или интерактивном режиме. У него есть несколько интересных опций, таких как возможность генерировать вывод в виде таблицы HTML. iusql — это тот же инструмент со встроенной поддержкой Unicode.
Где драйверы WIFI в Linux?
Средство устранения неполадок беспроводного подключения
- Откройте окно терминала, введите lshw -C network и нажмите Enter. …
- Просмотрите появившуюся информацию и найдите раздел Беспроводной интерфейс. …
- Если беспроводное устройство присутствует в списке, перейдите к шагу «Драйверы устройств».
Как узнать версию моего драйвера?
- Откройте диспетчер устройств из меню «Пуск» или выполните поиск в меню «Пуск».
- Разверните соответствующий драйвер компонента, который нужно проверить, щелкните драйвер правой кнопкой мыши и выберите «Свойства».
- Перейдите на вкладку «Драйвер», и отобразится версия драйвера.
Как мне вывести список всех драйверов в Linux?
При использовании Linux файл / proc / modules показывает, какие модули ядра (драйверы) в настоящее время загружены в память.
Как мне найти свой порт ODBC?
Выбрать начало & gt; Настройки & gt; Панель управления & gt; Инструменты администрирования & gt; Источники данных (ODBC). Выберите вкладку Системный DSN и выберите DSN для базы данных, как показано ниже: Выберите Настроить, как показано ниже: Порт будет указан на одном из экранов редактора DSN в зависимости от типа используемой базы данных.
Как мне получить доступ к ODBC?
Щелкните Пуск, а затем щелкните Панель управления. На Панели управления дважды щелкните Администрирование. В диалоговом окне «Администрирование» дважды щелкните «Источники данных» (ODBC). Откроется диалоговое окно администратора источника данных ODBC.
Как создать соединение ODBC для SQL Server в Linux?
Перед установкой драйвера выполните следующую команду: ./install.sh verify. Вывод./install.sh verify сообщает, есть ли на вашем компьютере необходимое программное обеспечение для поддержки драйвера ODBC в Linux. Когда вы будете готовы установить драйвер ODBC в Linux, выполните команду:./install.sh install.
Как мне подключиться к ODBC в Linux?
Чтобы настроить соединение ODBC для Linux, выполните следующие шаги:
- Шаг 1: Установите переменные среды.
- Шаг 2: Определите источники данных ODBC в odbc. ini.
- Шаг 3: (Необязательно) Определите драйвер ODBC в. odbcinst. ini.
- Шаг 4: Настройте драйвер Drill ODBC.
ODBC — это API?
Open Database Connectivity (ODBC) — это открытый стандартный интерфейс прикладного программирования (API) для доступа к базе данных.
Работает ли ODBC в Linux?
Linux использует именованные источники данных (DSN) для подключения клиентских приложений на основе ODBC к Snowflake. Вы можете установить драйвер ODBC с помощью файла TGZ, пакета RPM или пакета DEB, представленных в репозитории клиента Snowflake.
Как узнать, установлен ли ODBC в Linux?
Чтобы проверить, установлен ли unixODBC в системе, вы можете запустить команды which odbcinst и which isql, которые должны вернуть путь к соответствующим инструментам, или просто запустить isql, который должен распечатайте синтаксис и доступные параметры для утилиты isql.
Как мне подключиться к SQL Server в Linux?
Чтобы подключиться к именованному экземпляру, используйте формат имя_машины имя_экземпляра. Чтобы подключиться к экземпляру SQL Server Express, используйте формат машины SQLEXPRESS. Чтобы подключиться к экземпляру SQL Server, который не прослушивает порт по умолчанию (1433), используйте формат machinename: port.
В чем разница между JDBC и ODBC?
ODBC — это основанный на SQL интерфейс прикладного программирования (API), созданный Microsoft, который используется программными приложениями Windows для доступа к базам данных через SQL. JDBC — это API на основе SQL, созданный Sun Microsystems для обеспечения возможности приложений Java использовать SQL для доступа к базе данных.
Как мне найти свой DSN в Linux?
Для unixODBC DSN перечислены в / usr / local / etc / odbc. ini. Установленные драйверы ODBC будут перечислены в / usr / local / etc / odbcinst. ini.
Какие порты использует ODBC?
По умолчанию, типичные порты, используемые SQL Server и связанными службами ядра СУБД: TCP 1433, 4022, 135, 1434, UDP 1434.
Как создать ODBC DSN?
Добавить источник данных ODBC
- Нажмите «Пуск», а затем нажмите «Панель управления».
- На панели управления дважды щелкните «Администрирование».
- В диалоговом окне «Администрирование» дважды щелкните «Источники данных» (ODBC). …
- Щелкните User DSN, System DSN или File DSN, в зависимости от типа источника данных, который вы хотите добавить. …
- Щелкните Добавить.