Не удается найти пакет установки для продукта microsoft odbc driver 17 for sql server
ODBC весьма полезен для процедур доступа к приложениям, особенно для профессиональных пользователей. И, похоже, существует множество проблем для пользователей Windows 10, которые либо перешли с Windows 7, либо обновили свою версию Windows 10 до последней версии.
Если вы один из них и у вас есть определенные проблемы с ODBC в Windows 10, проверьте решения ниже.
- Удалить SMBv1 и включить SMBv2/SMBv3)
- Проверьте брандмауэр Windows и Защитник Windows
- Обновление драйверов
- Откат к предыдущей версии Windows
Решение 1. Удалите SMBv1 и включите SMBv2/SMBv3)
Некоторые пользователи решили проблему, отключив SMBv1 и включив SMBv2 или SMBv3. Это можно сделать различными способами, начиная с PowerShell или редактора реестра. Последний способ быстрее и проще, но может негативно повлиять на ваш компьютер при неправильном использовании. Поэтому, прежде чем выполнять следующие шаги, обязательно сделайте резервную копию вашего реестра.
Вот как отключить SMBv1 и включить SMBv2/SMBv3:
- В строке поиска Windows введите regedit и откройте редактор реестра.
- Перейдите в ComputerHKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters .
- Щелкните правой кнопкой мыши пустое пространство и создайте новый Dword, назовите его SMB1 и установите его значение равным 0.
- Щелкните правой кнопкой мыши на пустом месте и создайте новый Dword, назовите его SMB2 и установите его значение равным 1.
- Закройте редактор реестра и перезагрузите компьютер.
Сделайте это на каждой уязвимой машине и не забудьте перезагрузить ее, чтобы изменения вступили в силу.
- ЧИТАЙТЕ ТАКЖЕ: отключите SMBv1 в Windows с помощью этих быстрых методов
Решение 2. Проверьте брандмауэр Windows и Защитник Windows
Некоторым пользователям удалось решить проблему, просто добавив белый список или временно отключив брандмауэр Windows и включив Защитник Windows. Это долгосрочное решение, но оно того стоит. Если у вас уже есть сторонний антивирус, попробуйте объединить его с нативным антивирусом.
После этого перезагрузите компьютер и попробуйте снова получить доступ к приложению ODBC.
В случае, если вы используете 32-битный Office на 64-битной машине через ODBC, вам потребуется некоторая перенастройка, чтобы избежать ошибок драйвера. Или, скорее, доступ к версии ODBC32 вместо стандартной 64-битной версии, представленной в архитектуре x64.
Вот где его найти и как его запустить:
- Перейдите к C: WindowssysWOW64odbcad32.exe и запустите его. Это 32-битный администратор источника данных ODBC.
- Попробуйте применить драйверы снова.
- После того, как вы применили драйверы, перезагрузите компьютер.
Как говорили многие из затронутых пользователей, проблема возникла после того, как они обновили Windows 10 до версии 1803. То же самое можно применить к 1809. И вместо того, чтобы ждать, пока Microsoft решит проблемы ODBC в их текущем выпуске, мы скорее предлагаем откат до предыдущей версии, где сервис был полностью функциональным.
Вот как перейти к предыдущей версии Windows 10:
- Откройте Настройки .
- Выберите Обновление и безопасность .
- Выберите Восстановление на левой панели.
- Нажмите « Вернуться к предыдущей версии Windows 10 ».
- Нажмите Начало работы и следуйте инструкциям.
Для корректного подключения к базам данных 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)
В файле «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.
cd /tmp/unixODBC<временная метка>/unixODBC-2.3.0
sudo make install
cd -
Если команды выполняются через пользователя sudo, то для перехода в директорию необходимо сменить пользователя на root с помощью команды:
Далее перейти в папку и выполнить команду:
cd /tmp/unixODBC<временная метка>/unixODBC-2.3.0
После этого выйти из-под пользователя 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]
Для проверки правильности установки драйвера можно выполнить следующую команду:
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 -v <DATA_SOURCE_NAME> <USER>@<HOST> <PASSWORD>
При этом будет возможность выполнить запросы к базе данных.
[ISQL]ERROR: Could not SQLConnect
Для устранения ошибок на данном этапе необходимо обратиться к администратору СУБД.
Несколько дней назад встал вопрос о написании консольного приложения, которое будет работать в 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 приложений. Возможно это тема для еще одной публикации. Я опишу лишь ключевые моменты.
Там версия 17, при этом есть ещё отдельный компонент с припиской sdk
В системе (windows 10) четыре варианта других
odbc driver 13 for sql server
sql server
sql server native client 11.0
sql server native client rda 11.0
Выбрал свежую 17, sdk ставить не стал
Если бы знать, что не помешает - поставил бы
Это вроде как некий прямой доступ при разработке приложений
Тоже непонятно какой
Если несложно - подскажите плз, правильно ли выбрал
Приложенька особых требований не имеет, так что нужно просто чтобы как можно быстрее работало
Доступ используется для только для заливки данных в сервер, и она построчная
Поток данных довольно большой, критично время записи каждой записи))
Также интересно было бы прочитать, что за прямой доступ, и что за остальные версии в системе, и зачем они там
Видите, на рисунке, запущен 64 бит администратор ODBC, но драйверы есть 32 битные, и есть, внимание, 32/64 битные.
Вот как раз SQL Server Native Client, и SQL Server ODBC именно такие, двойной разрядностию
Так что вы ставили не "64битный драйвер 17 версии", а драйвер двойной разрядности, что внутри устроено как 2 драйвера, а приложение обращается к нужному - это обеспечивает менеджер ODBC, то есть приложения сами файл DLL драйвера не ищут.
всё, увидел, спасибо
я и спрашивал "значит там внутри и 32битный есть?" ))
тогда последний тупой вопрос
если приложение 32битное, то ведь не хуже с ним использовать именно этот 64/32 драйвер, чем отдельный 32битный?
на странице загрузки - два драйвера, 64/32 (как выяснили), и только 32битный
или там идет замедление из-за необходимости выбора?
хотя тогда был бы отдельный 64битный, наверное
ну и исходный нетупой вопрос - какой драйвер быстрее и лучше из перечисленных в начале
из видимых сейчас в Администраторе (64):
odbc driver 17 for sql server
odbc driver 13 for sql server
sql server
sql server native client 11.0
sql server native client rda 11.0
из видимых сейчас в Администраторе (32)
odbc driver 17 for sql server
odbc driver 13 for sql server
sql server
sql server native client 11.0
это понятно
может я тоже программист или буду чуть позже))
Не, из за выбора разрядности замедления точно не будет, оно же выбирает во время первого использования, как я понимаю.
Читайте также: