Поделиться через


Установка Microsoft ODBC Driver for SQL Server (Linux)

В этой статье объясняется, как установить Microsoft ODBC Driver for SQL Server в Linux. В ней также содержатся инструкции для необязательных средств командной строки для SQL Server (bcp и sqlcmd) и заголовков разработки unixODBC.

В этой статье приведены команды для установки драйвера ODBC из оболочки bash. Если вы хотите скачать пакеты напрямую, см. раздел "Скачать драйвер ODBC для SQL Server".

Microsoft ODBC 18

В следующих разделах объясняется, как установить драйвер Microsoft ODBC 18 из оболочки Bash для различных дистрибутивов Linux. Поддерживаемые дистрибутивы: Alpine Linux, Debian, Red Hat Enterprise Linux (RHEL), Oracle Linux, SUSE Linux Enterprise Server (SLES), Ubuntu и Azure Linux. Начиная с версии 18.4, чтобы автоматически принять EULA при установке драйвера, отличного от Alpine Linux (.debили .rpm), можно создать файл /opt/microsoft/msodbcsql18/ACCEPT_EULA.

case $(uname -m) in
    x86_64)   architecture="amd64" ;;
    arm64)   architecture="arm64" ;;
    *) architecture="unsupported" ;;
esac
if [[ "unsupported" == "$architecture" ]];
then
    echo "Alpine architecture $(uname -m) is not currently supported.";
    exit;
fi

#Download the desired package(s)
curl -O https://download.microsoft.com/download/9dcab408-e0d4-4571-a81a-5a0951e3445f/msodbcsql18_18.6.1.1-1_$architecture.apk
curl -O https://download.microsoft.com/download/b60bb8b6-d398-4819-9950-2e30cf725fb0/mssql-tools18_18.6.1.1-1_$architecture.apk

#(Optional) Verify signature, if 'gpg' is missing install it using 'apk add gnupg':
curl -O https://download.microsoft.com/download/9dcab408-e0d4-4571-a81a-5a0951e3445f/msodbcsql18_18.6.1.1-1_$architecture.sig
curl -O https://download.microsoft.com/download/b60bb8b6-d398-4819-9950-2e30cf725fb0/mssql-tools18_18.6.1.1-1_$architecture.sig

curl https://packages.microsoft.com/keys/microsoft.asc  | gpg --import -
gpg --verify msodbcsql18_18.6.1.1-1_$architecture.sig msodbcsql18_18.6.1.1-1_$architecture.apk
gpg --verify mssql-tools18_18.6.1.1-1_$architecture.sig mssql-tools18_18.6.1.1-1_$architecture.apk

#Install the package(s)
sudo apk add --allow-untrusted msodbcsql18_18.6.1.1-1_$architecture.apk
sudo apk add --allow-untrusted mssql-tools18_18.6.1.1-1_$architecture.apk

Примечание.

Для поддержки Alpine требуется драйвер версии 17.5 или более поздней.

Предыдущие версии

В следующих разделах приведены инструкции по установке предыдущих версий драйвера Microsoft ODBC в Linux. Рассматриваются следующие версии драйверов.

Microsoft ODBC 17

В следующих разделах объясняется, как установить драйвер Microsoft ODBC 17 из оболочки bash в различных дистрибутивах Linux.

Внимание

Если вы установили пакет версии 17 msodbcsql , который был кратко доступен, удалите его перед установкой msodbcsql17 пакета, чтобы избежать конфликтов. Пакет msodbcsql17 можно установить параллельно с пакетом msodbcsql версии 13.

#Download the desired package(s)
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.1-1_amd64.apk
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.10.1.1-1_amd64.apk

#(Optional) Verify signature, if 'gpg' is missing install it using 'apk add gnupg':
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.10.6.1-1_amd64.sig
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.10.1.1-1_amd64.sig

curl https://packages.microsoft.com/keys/microsoft.asc  | gpg --import -
gpg --verify msodbcsql17_17.10.6.1-1_amd64.sig msodbcsql17_17.10.6.1-1_amd64.apk
gpg --verify mssql-tools_17.10.1.1-1_amd64.sig mssql-tools_17.10.1.1-1_amd64.apk

#Install the package(s)
sudo apk add --allow-untrusted msodbcsql17_17.10.6.1-1_amd64.apk
sudo apk add --allow-untrusted mssql-tools_17.10.1.1-1_amd64.apk

Примечание.

Для поддержки Alpine требуется драйвер версии 17.5 или более поздней.

ODBC 13.1

В следующих разделах объясняется, как установить драйвер Microsoft ODBC 13.1 из оболочки bash в различных дистрибутивах Linux.

if ! [[ "8" == *"$(grep VERSION_ID /etc/os-release | cut -d '"' -f 2 | cut -d '.' -f 1)"* ]];
then
    echo "Debian $(grep VERSION_ID /etc/os-release | cut -d '"' -f 2 | cut -d '.' -f 1) is not currently supported.";
    exit;
fi

# Download the package to configure the Microsoft repo
curl -sSL -O https://packages.microsoft.com/config/debian/$(grep VERSION_ID /etc/os-release | cut -d '"' -f 2 | cut -d '.' -f 1)/packages-microsoft-prod.deb
# Install the package
sudo dpkg -i packages-microsoft-prod.deb
# Delete the file
rm packages-microsoft-prod.deb

sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install unixodbc-dev

ОДБК 13

В следующих разделах объясняется, как установить драйвер Microsoft ODBC 13 из оболочки bash в различных дистрибутивах Linux.

if ! [[ "6 7" == *"$(grep VERSION_ID /etc/os-release | cut -d '"' -f 2 | cut -d '.' -f 1)"* ]];
then
    echo "RHEL $(grep VERSION_ID /etc/os-release | cut -d '"' -f 2 | cut -d '.' -f 1) is not currently supported.";
    exit;
fi

# Download the package to configure the Microsoft repo
curl -sSL -O https://packages.microsoft.com/config/rhel/$(grep VERSION_ID /etc/os-release | cut -d '"' -f 2 | cut -d '.' -f 1)/packages-microsoft-prod.rpm
# Install the package
sudo yum install packages-microsoft-prod.rpm
# Delete the file
rm packages-microsoft-prod.rpm

sudo yum update
sudo yum remove unixODBC #to avoid conflicts
sudo ACCEPT_EULA=Y yum install msodbcsql-13.0.1.0-1 mssql-tools-14.0.2.0-1
sudo yum install unixODBC-utf16-devel #this step is optional but recommended*
#Create symlinks for tools
sudo ln -sfn /opt/mssql-tools/bin/sqlcmd-13.0.1.0 /usr/bin/sqlcmd
sudo ln -sfn /opt/mssql-tools/bin/bcp-13.0.1.0 /usr/bin/bcp

Автономная установка

Если вам нужен драйвер Microsoft ODBC 13 для установки на компьютере без подключения к Интернету, необходимо вручную разрешить зависимости пакетов. Драйвер Microsoft ODBC 13 имеет следующие прямые зависимости:

  • Ubuntu: libc6 (= 2.21), libstdc++6 (>= 4.9), libkrb5-3, libcurl3, opensl, debconf (>= 0.5), unixodbc (>>= 2.3.1-1)
  • Красная шляпа: glibc, e2fsprogs, krb5-libs, openssl, unixODBC
  • ГУСЕ: glibc, libuuid1, krb5, openssl, unixODBC

Каждый из этих пакетов, в свою очередь, имеет свои собственные зависимости, которые могут или не могут присутствовать в системе. Общие решения этой проблемы см. в документации по диспетчеру пакетов дистрибутива: Red Hat, Ubuntu и SUSE.

Кроме того, обычно можно вручную скачать все зависимые пакеты и разместить их вместе на компьютере установки, а затем вручную установить каждый пакет, завершив пакет Microsoft ODBC Driver 13.

sudo yum install glibc e2fsprogs krb5-libs openssl unixODBC unixODBC-devel #install dependencies
sudo rpm -i  msodbcsql-13.1.X.X-X.x86_64.rpm #install the Driver

ОДБК 11

В следующих разделах объясняется, как установить Microsoft ODBC Driver 11 в Linux. Для использования драйвера сначала установите диспетчер драйверов unixODBC. Дополнительные сведения см. в разделе "Установка диспетчера драйверов".

Этапы установки

Внимание

Эти инструкции ссылаются на msodbcsql-11.0.2270.0.tar.gz (файл установки для Red Hat Linux). При установке для SUSE Linux имя файла msodbcsql-11.0.2260.0.tar.gz.

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

  1. Убедитесь, что у вас есть корневое разрешение.

  2. Скачайте драйвер.
    Red Hat 5 - msodbcsql-11.0.2270.0.tar.gzSHA256: 178280daf01a49b8322cd902b6440979adacd594c01cd2a1f081dda23dbfb343
    Red Hat 6 - msodbcsql-11.0.2270.0.tar.gzSHA256: e9b6bd33d174c7753b3a3f2d541713fbc156b46254484a169caa3f459dd828f7
    SUSE Linux — msodbcsql-11.0.2260.0.tar.gz (SHA256: 86d1c5842be4f0095234a9455e18a04fdf4cc7960ec0255b37258112e2391ef5)

  3. Перейдите в каталог, куда был скачан файл с именем msodbcsql-11.0.2270.0.tar.gz. Убедитесь, что у вас есть файл *.tar.gz, соответствующий вашей версии Linux. Чтобы извлечь файлы, выполните следующую команду: tar xvzf msodbcsql-11.0.2270.0.tar.gz.

  4. Перейдите msodbcsql-11.0.2270.0 в каталог и увидите файл с именем install.sh.

  5. Чтобы просмотреть список доступных параметров установки, выполните следующую команду: ./install.sh.

  6. Создайте резервную копию odbcinst.ini. Установка обновлений драйвера odbcinst.ini. Файл odbcinst.ini содержит список драйверов, которые зарегистрированы с помощью диспетчера драйверов unixODBC. Чтобы определить на компьютере расположение файла odbcinst.ini, выполните следующую команду: odbc_config --odbcinstini.

  7. Перед установкой драйвера выполните следующую команду: ./install.sh verify. Выходные данные команды ./install.sh verify показывают, есть ли на компьютере ПО, необходимое для поддержки драйвера ODBC на Linux.

  8. Когда вы будете готовы установить драйвер ODBC на Linux, выполните команду: ./install.sh install. Если необходимо указать команду установки (bin-dir или lib-dir), укажите команду после параметра установки .

  9. После проверки лицензионного соглашения введите YES , чтобы продолжить установку.

При установке драйвер помещается в папку /opt/microsoft/msodbcsql/11.0.2270.0. Драйвер и его вспомогательные файлы должны находиться в папке /opt/microsoft/msodbcsql/11.0.2270.0.

Для проверки, что драйвер ODBC в Linux зарегистрирован, выполните следующую команду: odbcinst -q -d -n "ODBC Driver 11 for SQL Server".

Удаление

Вы можете удалить драйвер ODBC 11 на Linux, выполнив следующие команды:

  1. rm -f /usr/bin/sqlcmd

  2. rm -f /usr/bin/bcp

  3. rm -rf /opt/microsoft/msodbcsql

  4. odbcinst -u -d -n "ODBC Driver 11 for SQL Server"

Файлы драйвера

Драйвер ODBC в Linux состоит из следующих компонентов.

Компонент Описание
libmsodbcsql-17.X.so.X.X или libmsodbcsql-13.X.so.X.X Общий объект (so) файла динамической библиотеки, содержащий все функциональные возможности драйвера. Этот файл устанавливается в папке /opt/microsoft/msodbcsql17/lib64/ для версии 17 драйвера и в папке /opt/microsoft/msodbcsql/lib64/ для версии 13.
msodbcsqlr17.rll или msodbcsqlr13.rll Сопутствующий файл ресурса для библиотеки драйвера. Этот файл устанавливается в папке [driver .so directory]../share/resources/en_US/.
msodbcsql.h Файл заголовка, содержащий все новые определения, необходимые для использования драйвера.

Заметка: Вы не можете ссылаться на msodbcsql.h и odbcss.h в той же программе.

Файл msodbcsql.h устанавливается в папке /opt/microsoft/msodbcsql17/include/ для версии 17 драйвера и в папке /opt/microsoft/msodbcsql/include/ для версии 13.
ЛИЦЕНЗИЯ.txt Текстовый файл с условиями лицензионного соглашения. Этот файл помещается в папку /usr/share/doc/msodbcsql17/ для версии 17 драйвера и в папку /usr/share/doc/msodbcsql/ для версии 13.
Примечания к выпуску Текстовый файл с заметками о выпуске. Этот файл помещается в папку /usr/share/doc/msodbcsql17/ для версии 17 драйвера и в папку /usr/share/doc/msodbcsql/ для версии 13.

Загрузка файла ресурсов

Для работы драйверу необходимо загрузить файл ресурсов. Этот файл имеет имя msodbcsqlr17.rll или msodbcsqlr13.rll в зависимости от версии драйвера. Расположение .rll файла относительно расположения самого драйвера (so или dylib), как указано в предыдущей таблице. По состоянию на версию 17.1 драйвер также пытается загрузить .rll из каталога по умолчанию, если загрузка из относительного пути завершается ошибкой. Путь к файлу ресурсов по умолчанию в Linux: /opt/microsoft/msodbcsql17/share/resources/en_US/.

Устранение неполадок

Если версия драйвера была установлена и зарегистрирована в unixODBC, установка может завершиться ошибкой, например Installation failed, ODBC Driver $1 for SQL Server detected!. Чтобы устранить проблему, отмените регистрацию этой версии драйвера. Вы можете отменить регистрацию драйверов с помощью odbcinst команды: odbcinst -u -d -n "ODBC Driver $1 for SQL Server (Замените $1 на версию драйвера, сообщаемую в ошибке установки.) Если удаление с помощью команды odbcinst завершается ошибкой, вы можете вручную удалить разделы конфигурации драйвера из файла odbcinst.ini. Расположение odbcinst.ini файла можно найти с помощью команды odbcinst -j.

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