Microsoft odbc driver for sql server как установить
Для корректного подключения к базам данных Microsoft SQL Server необходима установка драйверов ODBC. В данной статье приведены инструкции по настройки данных драйверов.
Предварительно необходимо установить программы gcc и make:
На Debian-подобных дисрибутивах:
sudo apt-get install tar gcc make g++
На RedHat-подобных дистрибутивах:
sudo yum install tar gcc make
Процесс установки диспетчера драйверов описан в статье «Installing the Driver Manager».
Примечание . Не рекомендуется использовать флаг SQL_WCHART_CONVERT при сборке unixODBC.
Настройка сборки и установка драйвера диспетчера
После распаковки архива с драйвером и перед установкой, прежде всего необходимо внести изменения в файлы «build_dm.sh» и «install.sh»:
В файле «build_dm.sh» . Задайте значение req_proc="unknown" (только для Astra Linux и Debian).
В файле «install.sh» . Задайте значение req_proc="unknown" (только для Astra Linux и Debian).
Если установка происходит на Debian-подобный дистрибутив (Ubuntu, Astra Linux и т.п.), то в файле «install.sh» замените строку:
req_libs=( glibc e2fsprogs krb5-libs openssl )
req_libs=( libc6 e2fsprogs libkrb5-3 openssl )
Затем внесите изменения в функцию «check_required_libs». Данная функция должна выглядеть следующим образом:
log "Checking that required libraries are installed"
local present=$(dpkg-query -l "$lib" | grep "$lib" 2>/dev/null)
echo "$present" >> "$log_file"
if [ "$present" == "" ]; then
echo "The $lib library was not found installed in the dpkg database."
echo "See README for which libraries are required for the $driver_name."
В файле «build_dm.sh» замените -xvzf на -xvf .
Скачайте установочный файл ODBC unixODBC-2.3.0.tar.gz.
Установка ODBC
bash build_dm.sh --download-url=file://unixODBC-2.3.0.tar.gz
>>Run the command 'cd /tmp/unixODBC/unixODBC-2.3.0; make install' to install the driver manager.
sudo make install
cd -
Если команды выполняются через пользователя sudo, то для перехода в директорию необходимо сменить пользователя на root с помощью команды:
Далее перейти в папку и выполнить команду:
После этого выйти из-под пользователя root сочетанием клавиш «CTRL+D».
Примечание . Команда «sudo make install» может быть заменена на «sudo checkinstall», если программа checkinstall установлена в ОС.
После этого необходимо сохранить изменения. Проверьте возможность установки драйвера в системе выполнив команду:
bash install.sh verify
Starting install for Microsoft ODBC Driver 11 for SQL Server
Checking for 64 bit Linux compatible OS . OK
Checking required libs are installed . OK
unixODBC utilities (odbc_config and odbcinst) installed . OK
unixODBC Driver Manager version 2.3.0 installed . OK
unixODBC Driver Manager configuration correct . OK*
Microsoft ODBC Driver 11 for SQL Server already installed . NOT FOUND
See /tmp/msodbcsql.30762.3652.5941/install.log for more information about installation failures.
Для дальнейшей установки необходимо устранить все ошибки. После их устранения можно выполнить команду для установки драйвера:
bash install.sh install --accept-license
Создание символьной ссылки для платформы
Для создания символьной ссылки для платформы выполните команды:
cd /opt/ Foresight /fp9.x-biserver/bin
sudo ln -s
/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0 libmsodbcsql-11.0.so
Примечание . Расположение библиотек может отличаться от указанного в команде.
Разделяемые библиотеки
Перед началом работы с драйвером нужно убедиться в отсутствии проблем с разделяемыми библиотеками. Для этого выполните команду:
ldd /opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0 | grep not
Примечание . Расположение библиотек может отличаться от указанного в команде.
В случае присутствия всех необходимых библиотек можно переходить к регистрации драйвера.
Если в результате выполнения команды получился список, например:
libcrypto.so.10 => not found
libssl.so.10 => not found
То необходимо выполнить следующие действия:
sudo apt-get install libssl-dev
sudo ln -s libcrypto.so.1.0.0 libcrypto.so.10
sudo ln -s libssl.so.1.0.0 libssl.so.10
Для Ubuntu символьные ссылки будут другие:
cd /usr/lib/x86_64-linux-gnu
sudo apt-get install libssl-dev
sudo ln -s /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 libcrypto.so.10
sudo ln -s /lib/x86_64-linux-gnu/libssl.so.1.0.0 libssl.so.10
После это ещё раз проверьте все зависимости драйвера и в случае отсутствия проблем переходить к регистрации.
После выполнения установки ODBC запись о драйвере будет добавлена в файл «odbcinst.ini». При необходимости регистрацию драйвера можно осуществить вручную.
Для регистрация драйвера выполните команду:
odbcinst -i -d -f mssql.driver.template
где файл mssql.driver.template содержит необходимые для работы драйвера параметры. Например:
[ODBC Driver 11 for SQL Server]
Description = Microsoft ODBC Driver 11 for SQL Server
Для проверки правильности установки драйвера можно выполнить следующую команду:
odbcinst -q -d -n "ODBC Driver 11 for SQL Server"
Результатом правильной установки будет служить вывод всех параметров драйвера с их значениями.
Проверка подключения
Перед непосредственной работой с драйвером необходимо протестировать настройки подключения. Сперва можно использовать подключение с применением telnet:
telnet 192.168.1.1 1433
telnet: Unable to connect to remote host: Connection refused
Для устранения ошибок на данном этапе обратитесь к системному администратору.
Connected to 192.168.1.1.
Следующим шагом является проверка соединения с сервером с использованием параметров из источника данных. Для это выполните следующую команду:
При этом будет возможность выполнить запросы к базе данных.
[ISQL]ERROR: Could not SQLConnect
Для устранения ошибок на данном этапе необходимо обратиться к администратору СУБД.
В этой статье объясняется, как установить Microsoft ODBC Driver for SQL Server в Linux. В ней также содержатся инструкции для необязательных средств командной строки для SQL Server ( bcp и sqlcmd ) и заголовков разработки unixODBC.
В этой статье приведены команды для установки драйвера ODBC из оболочки bash. Сведения о том, как загрузить пакеты напрямую, см. в разделе Скачивание драйвера ODBC Driver for SQL Server.
Microsoft ODBC 18
В следующих разделах объясняется, как установить драйвер Microsoft ODBC 18 из оболочки Bash для различных дистрибутивов Linux.
Alpine Linux
Для поддержки Alpine требуется драйвер версии 17.5 или более поздней.
Debian
Вместо настройки переменной среды ACCEPT_EULA вы можете создать переменную debconf с именем "msodbcsql/ACCEPT_EULA": echo msodbcsql18 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
Red Hat Enterprise Server и Oracle Linux
SUSE Linux Enterprise Server
Ubuntu
Вместо настройки переменной среды ACCEPT_EULA вы можете создать переменную debconf с именем "msodbcsql/ACCEPT_EULA": echo msodbcsql18 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
Предыдущие версии
В следующих разделах приведены инструкции по установке предыдущих версий драйвера Microsoft ODBC в Linux. Рассматриваются следующие версии драйверов.
Microsoft ODBC 17
В следующих разделах объясняется, как установить драйвер Microsoft ODBC 17 из оболочки bash в различных дистрибутивах Linux.
Если вы установили пакет msodbcsql версии 17, который был доступен непродолжительное время, его следует удалить перед установкой пакета msodbcsql17 . Это позволит избежать конфликтов. Пакет msodbcsql17 можно установить параллельно с пакетом msodbcsql версии 13.
Alpine Linux
Для поддержки Alpine требуется драйвер версии 17.5 или более поздней.
Debian
Вместо настройки переменной среды ACCEPT_EULA вы можете создать переменную debconf с именем "msodbcsql/ACCEPT_EULA": echo msodbcsql17 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
Red Hat Enterprise Server и Oracle Linux
SUSE Linux Enterprise Server
Ubuntu
Вместо настройки переменной среды ACCEPT_EULA вы можете создать переменную debconf с именем "msodbcsql/ACCEPT_EULA": echo msodbcsql17 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
ODBC 13.1
В следующих разделах объясняется, как установить драйвер Microsoft ODBC 13.1 из оболочки bash в различных дистрибутивах Linux.
Debian 8
Red Hat Enterprise Server 6
Red Hat Enterprise Server 7
SUSE Linux Enterprise Server 11
SUSE Linux Enterprise Server 12
Ubuntu 15.10
Ubuntu 16.04
Ubuntu 16.10
ODBC 13
В следующих разделах объясняется, как установить драйвер Microsoft ODBC 13 из оболочки bash в различных дистрибутивах Linux.
Red Hat Enterprise Server 6 (ODBC 13)
Red Hat Enterprise Server 7 (ODBC 13)
Ubuntu 15.10 (ODBC 13)
Ubuntu 16.04 (ODBC 13)
SUSE Linux Enterprise Server 12 (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, e2fsprogs, krb5-libs, openssl, unixODBC
- SUSE: glibc, libuuid1, krb5, openssl, unixODBC
Каждый из этих пакетов, в свою очередь, имеет собственные зависимости, которые могут отсутствовать в системе. Для решения этой проблемы в общем случае следует обратиться к документации по диспетчеру пакетов используемого дистрибутива: Red Hat, Ubuntu и SUSE
Другое распространенное решение — вручную скачать все зависимые пакеты в одну папку на компьютере установки, а затем вручную установить каждый пакет по очереди, завершив пакетом драйвера Microsoft ODBC версии 13.
Red Hat Linux Enterprise Server 7
Ubuntu 16.04 (ODBC 13 в автономном режиме)
SUSE Linux Enterprise Server 12 (ODBC 13 в автономном режиме)
После установки пакета можно проверить, находит ли драйвер Microsoft ODBC версии 13 все нужные зависимости. Для этого выполните команду ldd и проверьте наличие отсутствующих библиотек в выходных данных:
ODBC 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 .
Порядок установки драйвера
Убедитесь, что у вас есть корневое разрешение.
Перейдите в каталог, куда был скачан файл с именем msodbcsql-11.0.2270.0.tar.gz . Убедитесь в наличии файла *.TAR.GZ, который соответствует вашей версии Linux. Чтобы извлечь файлы, выполните следующую команду: tar xvzf msodbcsql-11.0.2270.0.tar.gz .
Перейдите в каталог msodbcsql-11.0.2270.0 , где должен находиться файл install.sh.
Чтобы просмотреть список доступных параметров установки, выполните следующую команду: ./install.sh.
Перед установкой драйвера выполните следующую команду: ./install.sh verify . Выходные данные команды ./install.sh verify показывают, есть ли на компьютере ПО, необходимое для поддержки драйвера ODBC на Linux.
Когда вы будете готовы установить драйвер ODBC на Linux, выполните команду: ./install.sh install . Если вам нужно будет дополнительно указать команду установки ( bin-dir или lib-dir ), сделайте это после параметра install.
После просмотра лицензионного соглашения введите YES для продолжения установки.
При установке драйвер помещается в папку /opt/microsoft/msodbcsql/11.0.2270.0 . Драйвер и его вспомогательные файлы должны находиться в папке /opt/microsoft/msodbcsql/11.0.2270.0 .
Удаление
Вы можете удалить драйвер ODBC 11 на Linux, выполнив следующие команды:
rm -f /usr/bin/sqlcmd
rm -rf /opt/microsoft/msodbcsql
odbcinst -u -d -n "ODBC Driver 11 for SQL Server"
Файлы драйвера
Драйвер ODBC в Linux состоит из следующих компонентов.
Примечание. В одной программе нельзя ссылаться на msodbcsql.h и odbcss.h одновременно.
Загрузка файла ресурсов
Для работы драйверу необходимо загрузить файл ресурсов. Этот файл имеет имя msodbcsqlr17.rll или msodbcsqlr13.rll в зависимости от версии драйвера. Файл .rll располагается по пути относительно расположения самого драйвера ( so или dylib ), указанного в таблице выше. Кроме того, начиная с версии 17.1 драйвер пытается загрузить файл .rll из каталога по умолчанию, если его не удалось загрузить по относительному пути. Путь к файлу ресурсов по умолчанию в Linux: /opt/microsoft/msodbcsql17/share/resources/en_US/ .
Устранение неполадок
Если не удается установить подключение к SQL Server с помощью драйвера ODBC, см. статью, посвященную известным проблемам при устранении неполадок подключения.
Дальнейшие действия
После установки драйвера можно попробовать пример приложения C++ ODBC. Подробнее о разработке приложений ODBC см. в разделе Разработка приложений.
Дополнительные сведения см. в статьях с заметками о выпуске и требованиями к системе для драйвера ODBC.
This article explains how to install the Microsoft ODBC Driver for SQL Server on Linux. It also includes instructions for the optional command-line tools for SQL Server ( bcp and sqlcmd ) and the unixODBC development headers.
This article provides commands for installing the ODBC driver from the bash shell. If you want to download the packages directly, see Download ODBC Driver for SQL Server.
Microsoft ODBC 18
The following sections explain how to install the Microsoft ODBC driver 18 from the bash shell for different Linux distributions.
Alpine Linux
Driver version 17.5 or higher is required for Alpine support.
Debian
You can substitute setting the environment variable 'ACCEPT_EULA' with setting the debconf variable 'msodbcsql/ACCEPT_EULA' instead: echo msodbcsql18 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
Red Hat Enterprise Server and Oracle Linux
SUSE Linux Enterprise Server
Ubuntu
You can substitute setting the environment variable 'ACCEPT_EULA' with setting the debconf variable 'msodbcsql/ACCEPT_EULA' instead: echo msodbcsql18 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
Previous versions
The following sections provide instructions for installing previous versions of the Microsoft ODBC driver on Linux. The following driver versions are covered:
Microsoft ODBC 17
The following sections explain how to install the Microsoft ODBC driver 17 from the bash shell for different Linux distributions.
If you installed the v17 msodbcsql package that was briefly available, you should remove it before installing the msodbcsql17 package. This will avoid conflicts. The msodbcsql17 package can be installed side by side with the msodbcsql v13 package.
Alpine Linux
Driver version 17.5 or higher is required for Alpine support.
Debian
You can substitute setting the environment variable 'ACCEPT_EULA' with setting the debconf variable 'msodbcsql/ACCEPT_EULA' instead: echo msodbcsql17 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
Red Hat Enterprise Server and Oracle Linux
SUSE Linux Enterprise Server
Ubuntu
You can substitute setting the environment variable 'ACCEPT_EULA' with setting the debconf variable 'msodbcsql/ACCEPT_EULA' instead: echo msodbcsql17 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections
ODBC 13.1
The following sections explain how to install the Microsoft ODBC driver 13.1 from the bash shell for different Linux distributions.
Debian 8
Red Hat Enterprise Server 6
Red Hat Enterprise Server 7
SUSE Linux Enterprise Server 11
SUSE Linux Enterprise Server 12
Ubuntu 15.10
Ubuntu 16.04
Ubuntu 16.10
ODBC 13
The following sections explain how to install the Microsoft ODBC driver 13 from the bash shell for different Linux distributions.
Red Hat Enterprise Server 6 (ODBC 13)
Red Hat Enterprise Server 7 (ODBC 13)
Ubuntu 15.10 (ODBC 13)
Ubuntu 16.04 (ODBC 13)
SUSE Linux Enterprise Server 12 (ODBC 13)
Offline installation
If you prefer/require the Microsoft ODBC Driver 13 to be installed on a computer with no internet connection, you'll need to resolve package dependencies manually. The Microsoft ODBC Driver 13 has the following direct dependencies:
- Ubuntu: libc6 (>= 2.21), libstdc++6 (>= 4.9), libkrb5-3, libcurl3, openssl, debconf (>= 0.5), unixodbc (>= 2.3.1-1)
- Red Hat: glibc, e2fsprogs, krb5-libs, openssl, unixODBC
- SUSE: glibc, libuuid1, krb5, openssl, unixODBC
Each of these packages in turn has their own dependencies, which may or may not be present on the system. For a general solution to this issue, refer to your distribution's package manager documentation: Red Hat, Ubuntu, and SUSE
It's also common to manually download all the dependent packages and place them together on the installation computer, then manually install each package in turn, finishing with the Microsoft ODBC Driver 13 package.
Red Hat Linux Enterprise Server 7
Ubuntu 16.04 (ODBC 13 offline)
SUSE Linux Enterprise Server 12 (ODBC 13 offline)
After you've completed the package installation, you can verify that the Microsoft ODBC Driver 13 can find all its dependencies by running ldd and inspecting its output for missing libraries:
ODBC 11
The following sections explain how to install the Microsoft ODBC driver 11 on Linux. Before you can use the driver, install the unixODBC driver manager. For more information, see Installing the Driver Manager.
Installation Steps
These instructions refer to msodbcsql-11.0.2270.0.tar.gz , which is installation file for Red Hat Linux. If you are installing the Preview for SUSE Linux, the file name is msodbcsql-11.0.2260.0.tar.gz .
To install the driver:
Make sure that you have root permission.
Change to the directory where the download placed the file msodbcsql-11.0.2270.0.tar.gz . Make sure that you have the *.tar.gz file that matches your version of Linux. To extract the files, execute the following command, tar xvzf msodbcsql-11.0.2270.0.tar.gz .
Change to the msodbcsql-11.0.2270.0 directory and there you should see a file called install.sh.
To see a list of the available installation options, execute the following command: ./install.sh.
Make a backup of odbcinst.ini. The driver installation updates odbcinst.ini. odbcinst.ini contains the list of drivers that are registered with the unixODBC Driver Manager. To discover the location of odbcinst.ini on your computer, execute the following command: odbc_config --odbcinstini .
Before you install the driver, execute the following command: ./install.sh verify . The output of ./install.sh verify reports if your computer has the required software to support the ODBC driver on Linux.
When you're ready to install the ODBC driver on Linux, execute the command: ./install.sh install . If you need to specify an install command ( bin-dir or lib-dir ), specify the command after the install option.
After reviewing the license agreement, type YES to continue with the installation.
Installation puts the driver in /opt/microsoft/msodbcsql/11.0.2270.0 . The driver and its support files must be in /opt/microsoft/msodbcsql/11.0.2270.0 .
To verify that the Microsoft ODBC driver on Linux was registered successfully, execute the following command: odbcinst -q -d -n "ODBC Driver 11 for SQL Server" .
Uninstall
You can uninstall the ODBC driver 11 on Linux by executing the following commands:
rm -f /usr/bin/sqlcmd
rm -rf /opt/microsoft/msodbcsql
odbcinst -u -d -n "ODBC Driver 11 for SQL Server"
Driver files
The ODBC driver on Linux consists of the following components:
Note: You can't reference msodbcsql.h and odbcss.h in the same program.
Resource file loading
The driver needs to load the resource file to function. This file is called msodbcsqlr17.rll or msodbcsqlr13.rll depending on the driver version. The location of the .rll file is relative to the location of the driver itself ( so or dylib ), as noted in the table above. As of version 17.1 the driver will also attempt to load the .rll from the default directory if loading from the relative path fails. The default resource file path on Linux is /opt/microsoft/msodbcsql17/share/resources/en_US/ .
Troubleshooting
If you're unable to make a connection to SQL Server using the ODBC driver, see the known issues article on troubleshooting connection problems.
Next steps
After installing the driver, you can try the C++ ODBC example application. For more information about developing ODBC applications, see Developing Applications.
For more information, see the ODBC driver release notes and system requirements.
В этой статье обсуждаются драйверы ODBC, подключающиеся к SQL Server.
Совместимость с версиями SQL
Совместимость указывает, что драйвер был протестирован на совместимость с существующими выпусками SQL во время выпуска драйвера. Выпуски SQL Server обычно пытаются поддерживать обратную совместимость с существующими драйверами клиента. Но новые функции в выпусках SQL Server могут быть недоступны для более старых версий клиентских драйверов.
Версия базы данных → ↓ Версия драйвера | База данных SQL Azure | Azure Synapse Analytics | Управляемый экземпляр SQL Azure | SQL Server 2019 | SQL Server 2017 | SQL Server 2016 | SQL Server 2014 | SQL Server 2012 | SQL Server 2008 R2 | SQL Server 2008 | SQL Server 2005 |
---|---|---|---|---|---|---|---|---|---|---|---|
18.0 | Да | Да | Да | Да | Да | Да | Да | Да | |||
17.9 | Да | Да | Да | Да | Да | Да | Да | Да | |||
17.8 | Да | Да | Да | Да | Да | Да | Да | Да | |||
17,7 | Да | Да | Да | Да | Да | Да | Да | Да | |||
17.6 | Да | Да | Да | Да | Да | Да | Да | Да | |||
17.5 | Да | Да | Да | Да | Да | Да | Да | Да | |||
17.4 | Да | Да | Да | Да | Да | Да | Да | Да | |||
17.3 | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да | |
17.2 | Да | Да | Да | Да | Да | Да | Да | Да | Да | ||
17.1 | Да | Да | Да | Да | Да | Да | Да | Да | Да | ||
17,0 | Да | Да | Да | Да | Да | Да | Да | Да | Да | ||
Версия 13.1 | Да | Да | Да | Да | Да | Да | |||||
13 | Да | Да | Да | Да | Да | ||||||
11 | Да | Да | Да | Да | Да |
Сведения о строке подключения
Имя драйвера, которое вы указываете в строке подключения, должно быть одним из следующих:
- ODBC Driver 11 for SQL Server
- ODBC Driver 13 for SQL Server (для версии 13 и 13.1)
- ODBC Driver 17 for SQL Server
- ODBC Driver 18 for SQL Server
Поддерживаемые операционные системы
Следующая таблица указывает на поддержку версии драйвера для версий операционной системы Windows:
Операционная система → ↓ Версия драйвера | Windows Server 2022 | Windows Server 2019 | Windows Server 2016 | Windows Server 2012 R2 | Windows Server 2012 | Windows Server 2008 R2 | Windows 11 | Windows 10 | Windows 8.1 | Windows 7 | Windows Vista с пакетом обновления 2 (SP2) |
---|---|---|---|---|---|---|---|---|---|---|---|
18.0 | Да | Да | Да | Да | Да | Да | Да | Да | |||
17.9 | Да | Да | Да | Да | Да | Да | Да | Да | |||
17.8 | Да | Да | Да | Да | Да | Да | |||||
17,7 | Да | Да | Да | Да | Да | Да | |||||
17.6 | Да | Да | Да | Да | Да | Да | |||||
17.5 | Да | Да | Да | Да | Да | Да | |||||
17.4 | Да | Да | Да | Да | Да | Да | Да | Да | |||
17.3 | Да | Да | Да | Да | Да | Да | Да | Да | |||
17.2 | Да | Да | Да | Да | Да | Да | Да | ||||
17.1 | Да | Да | Да | Да | Да | Да | Да | ||||
17,0 | Да | Да | Да | Да | Да | Да | Да | ||||
Версия 13.1 | Да | Да | Да | Да | Да | Да | Да | ||||
13 | Да | Да | Да | Да | |||||||
11 | Да | Да | Да | Да |
Установка Microsoft ODBC Driver for SQL Server
Драйвер устанавливается при запуске msodbcsql.msi из одной из загрузок для Windows.
Для тех, кто установил драйвер 17.1.0.1 или ниже, рекомендуется удалить его вручную перед установкой новой версии драйвера.
Параллельно с Native Client
Драйвер можно установить параллельно с SQL Server Native Client. Основные версии драйвера (11, 13, 17, 18) могут быть установлены параллельно друг с другом.
При инициировании msodbcsql.msi по умолчанию устанавливаются только клиентские компоненты. Этими компонентами служат файлы, поддерживающие работу приложения, разработанного с помощью драйвера. Чтобы установить компоненты пакета SDK, укажите в командной строке ADDLOCAL=ALL . Ниже приведен пример.
Лицензия пользователя
Укажите IACCEPTMSODBCSQLLICENSETERMS=YES , чтобы принять условия лицензионного соглашения, если для установки используется параметр /passive , /qn , /qb или /qr . Этот параметр указывается только прописными буквами. Ниже приведен пример.
Удаление без взаимодействия с пользователем
В следующем примере показано выполнение удаления без взаимодействия с пользователем.
Указание зависимость
Если приложение использует драйвер, оно должно указывать, что зависит от драйвера, с помощью параметра установки APPGUID . Это позволяет установщику драйвера вывести сведения о зависимых приложениях перед удалением. Чтобы задать зависимость от драйвера, присвойте параметру командной строки APPGUID код продукта при автоматической установке драйвера. Код продукта необходимо создать при использовании установщика (Майкрософт) для формирования пакета установки приложения. Ниже приведен пример.
Программы командной строки: sqlcmd.exe и bcp.exe
Программы командной строки bcp.exe и sqlcmd.exe , которые используются с драйвером, можно загрузить по адресу Microsoft Command Line Utilities 11 для SQL Server, Microsoft Command Line Utilities 13 для SQL Server или Microsoft Command Line Utilities 13.1 для SQL Server. Драйвер является необходимым условием для установки sqlcmd.exe и bcp.exe .
bcp.exe и sqlcmd.exe устанавливаются во вложенную папку 110\Tools в %PROGRAMFILES%\Microsoft SQL Server\Client SDK\ODBC для версии 11, и 130\Tools для 13 и 13.1.
Приложение, использующее функции BCP, должно указывать драйвер из той же версии, которая поставлялась с файлом заголовка и библиотекой, применявшимися при компиляции приложения.
Например, при компиляции приложения ODBC с помощью msodbcsql11.lib и msodbcsql.h используйте "DRIVER=" в строке подключения.
Компоненты Microsoft ODBC Driver for SQL Server в Windows
Драйвер ODBC для Windows состоит из следующих компонентов:
Примечание. Нельзя сочетать в одной программе ссылки на msodbcsql.h и odbcss.h.
Примечание. Если вы включаете в программу ссылку на этот файл библиотеки, убедитесь, что этот файл находится в вашем системном пути, а также в системном пути других пользователей, которые используют это приложение.
Несколько дней назад встал вопрос о написании консольного приложения, которое будет работать в Linux CentOS 7 и взаимодействовать с MS SQL Server 2012. Мне очень нравится Qt и я решил, что воспользуюсь им для решения этой задачи. И если под Windows я достаточно быстро настроил необходимое окружение, то под Linux я столкнулся с проблемами, которые очень тяжело было решить с помощью гуглинга. Этому вопросу я посвятил полтора дня. Считаю полезным поделиться своим опытом, возможно кому-то это поможет сэкономить драгоценное время.
Инструменты
Я не хочу тянуть на сервер исходники Qt, для того чтобы собрать плагин и само приложение. Поэтому беру образ CentOS 7 LiveGNOME и устанавливаю его на VirtualBox машину. После делаю полный апдейт, и ставлю VirtualBox Guest Additions.
Скачиваю установщик Qt для Linux x64. Устанавливаю Qt 5.9.1, дополнительно при установке выбираю галочку Source, чтобы получить исходники.
Установка Microsoft ODBC Driver for SQL Server
Согласно инструкции устанавливаю драйвер:
Драйвер нужно установить как на VirtualBox, так и на машину, где будет работать софт.
Сборка Qt плагина QODBC
Следуя инструкции, скачиваем куда-нибудь unixODBC, распаковываем. Теперь нам нужно собрать unixODBC и установить. В документации Qt, а так же в других источниках в основном я встречал примеры, которые предполагают установку unixODBC в /usr/local/unixODBC. Тут дело вкуса конечно, но я буду использовать именно такое расположение. Так же файлы конфигов драйверов я хочу поместить в /usr/local/etc Для этого нужно сконфигурировать unixODBC со следующими параметрами:
Затем собираем и устанавливаем:
Теперь необходимо настроить конфигурацию Microsoft ODBC Driver for SQL Server. Для этого переходим в /usr/local/unixODBC/bin и выполняем:
Если вы устанавливали драйвер как было описано выше, то расположение файла odbcinst.ini будет именно таким. Иначе вам нужно определить свой путь. Все эти действия нужно выполнить и на Virtualbox машине и на рабочей.
Теперь нужно собрать Qt плагин для работы с ODBC драйвером. И с этого момента начинаются проблемы, которые частично связаны с багом, который еще не пофиксили. Для того, чтобы собрать плагин придется применить некоторые костыли. Если у кого-то возникнет более элегантный вариант костыля, пожалуйста напишите в комментариях.
Итак, для сборки в штатных условиях нам нужно выполнить простую процедуру. Переходим в QT_DIR/5.9.1/Src/qtbase/src/plugins/sqldrivers/odbc и выполняем:
Но из-за того, что имеем баг, скорее всего вы получите ошибку:
На отсутствие файла qtsqldrivers-config.pri, можно не обращать внимание, а вот вторая ошибка не даст нам собрать плагин. Чтобы ее избежать нужно закомменитровать в файле odbc.pro строчку:
После этого повторим вызов qmake:
И получим на выходе Makefile. Еще одна проблема с которой я столкнулся это флаги компилятора -Wdate_time и -std=c++1z, которые вызывали ошибку сборки.
На этот момент я уже потратил много времени, чтобы хоть как-то собрать плагин, поэтому эту проблему я решил жестко, просто открыл сгенерированный Makefile и изменил -std=c++1z на -std=c++11, а флаг -Wdate_time просто удалил. Эти пары флагов встречаются в двух местах. Можно установить более свежий gcc, или может кто-то подскажет есть ли возможность указать для qmake какие-то параметры, чтобы использовать c++11 вместо c++17?
Как бы вы ни поступили, теперь можно выполнить:
Тестовое приложение
Я создал консольное приложение в Qt и написал следующий код для тестирования соединения:
Собираем проект на Virtualbox машине. Запускаем, убеждаемся, что все работает. После этого собираем Release версию программы. Я не буду сейчас описывать процесс деплоя Qt приложений. Возможно это тема для еще одной публикации. Я опишу лишь ключевые моменты.
Вместе с исполняемым файлом вам потребуются дополнительные библиотеки, которые можно посмотреть с помощью ldd. Так же вам потребуется сам плагин, который вы собрали. Он лежит в моем случае в QT_DIR/5.9.1/gcc_64/plugins/sqldrivers и называется libsqlodbc.so. Его необходимо так же утащить за собой. Библиотеки вы можете положить например в /usr/lib и система их подхватит, а с плагинами дело обстоит несколько по-другому. Есть множество способов сказать Qt от куда загружать плагины. Самый простой — это перед запуском определить переменную окружения QT_PLUGIN_PATH.
Запускаем программу, все должно работать.
Заключение
Хотелось бы услышать комментарии по поводу альтернативных решений данного вопроса. С удовольствием дополню/исправлю этот пост.
Читайте также: