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


Установка 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

Автономная установка для ODBC 13

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

  • Ubuntu: libc6 (>= 2.21), libstdc++6 (>= 4.9), libkrb5-3, libcurl3, openssl, debconf (= 0.5), > (unixODBC>= 2.3.1-1)
  • Red Hat: glibc, , e2fsprogskrb5-libs, opensslunixODBC
  • SUSE: 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. Скачайте драйвер.

    Распределение Driver SHA256-хэш
    Red Hat 5 msodbcsql-11.0.2270.0.tar.gz 178280daf01a49b8322cd902b6440979adacd594c01cd2a1f081dda23dbfb343
    Red Hat 6 msodbcsql-11.0.2270.0.tar.gz e9b6bd33d174c7753b3a3f2d541713fbc156b46254484a169caa3f459dd828f7
    SUSE Linux msodbcsql-11.0.2260.0.tar.gz 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), укажите команду после install параметра.

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

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

Чтобы убедиться, что драйвер Microsoft ODBC в Linux успешно зарегистрирован, выполните следующую команду:

odbcinst -q -d -n "ODBC Driver 11 for SQL Server"

Удаление

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

rm -f /usr/bin/sqlcmd
rm -f /usr/bin/bcp
rm -rf /opt/microsoft/msodbcsql
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 в той же программе.

Путь установки для драйвера 17 — /opt/microsoft/msodbcsql17/include/, а для драйвера 13 — /opt/microsoft/msodbcsql/include/.
LICENSE.txt Текстовый файл с условиями лицензионного соглашения. Путь установки /usr/share/doc/msodbcsql17/ для драйвера 17 и /usr/share/doc/msodbcsql/ для драйвера 13.
RELEASE_NOTES Текстовый файл с заметками о выпуске. Путь установки для драйвера 17 — /usr/share/doc/msodbcsql17/, а для драйвера 13 — /usr/share/doc/msodbcsql/.

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

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

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

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

Installation failed, ODBC Driver $1 for SQL Server detected!

Чтобы устранить проблему, отмените регистрацию этой версии драйвера с помощью odbcinst команды. Замените $1 на версию драйвера, указанную в ошибке установки.

odbcinst -u -d -n "ODBC Driver $1 for SQL Server"

Если удаление с помощью odbcinst команды завершается ошибкой, вы можете вручную удалить разделы драйверов из odbcinst.ini файла. Расположение odbcinst.ini файла можно найти с помощью команды odbcinst -j.

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