Verification: a143cc29221c9be0

Odbc в php что это

Microsoft ODBC 17

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

  • Alpine Linux
  • Debian
  • Red Hat Enterprise Linux и Oracle
  • SUSE Linux Enterprise Server
  • Ubuntu

Важно!

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

Alpine Linux

#Download the desired package(s)
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/msodbcsql17_17.7.2.1-1_amd64.apk
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.7.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.7.2.1-1_amd64.sig
curl -O https://download.microsoft.com/download/e/4/e/e4e67866-dffd-428c-aac7-8d28ddafb39b/mssql-tools_17.7.1.1-1_amd64.sig

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


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

Примечание

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

Debian

sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version

#Debian 8 (only supported up to driver version 17.6)
curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list

#Debian 9
curl https://packages.microsoft.com/config/debian/9/prod.list > /etc/apt/sources.list.d/mssql-release.list

#Debian 10
curl https://packages.microsoft.com/config/debian/10/prod.list > /etc/apt/sources.list.d/mssql-release.list

exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y apt-get install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo apt-get install -y unixodbc-dev
# optional: kerberos library for debian-slim distributions
sudo apt-get install -y libgssapi-krb5-2

Примечание

Вместо настройки переменной среды ACCEPT_EULA вы можете создать переменную debconf с именем "msodbcsql/ACCEPT_EULA": echo msodbcsql17 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections

Red Hat Enterprise Server и Oracle Linux

sudo su

#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version

#Red Hat Enterprise Server 6 (only supported up to driver version 17.7)
curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo

#Red Hat Enterprise Server 7 and Oracle Linux 7
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo

#Red Hat Enterprise Server 8 and Oracle Linux 8
curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo

exit
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install -y msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo yum install -y unixODBC-devel

SUSE Linux Enterprise Server

sudo su
curl -O https://packages.microsoft.com/keys/microsoft.asc
rpm --import microsoft.asc

#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version

#SUSE Linux Enterprise Server 11 SP4
#Ensure SUSE Linux Enterprise 11 Security Module has been installed
zypper ar https://packages.microsoft.com/config/sles/11/prod.repo

#SUSE Linux Enterprise Server 12
zypper ar https://packages.microsoft.com/config/sles/12/prod.repo

#SUSE Linux Enterprise Server 15
zypper ar https://packages.microsoft.com/config/sles/15/prod.repo
#(Only for driver 17.3 and below)
SUSEConnect -p sle-module-legacy/15/x86_64

exit
sudo ACCEPT_EULA=Y zypper install -y msodbcsql17
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y zypper install -y mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo zypper install -y unixODBC-devel

Ubuntu

sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -

#Download appropriate package for the OS version
#Choose only ONE of the following, corresponding to your OS version

#Ubuntu 16.04
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

#Ubuntu 18.04
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

#Ubuntu 20.04
curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

#Ubuntu 21.04
curl https://packages.microsoft.com/config/ubuntu/21.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

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

Примечание

Вместо настройки переменной среды ACCEPT_EULA вы можете создать переменную debconf с именем "msodbcsql/ACCEPT_EULA": echo msodbcsql17 msodbcsql/ACCEPT_EULA boolean true | sudo debconf-set-selections

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

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

  • Microsoft ODBC Driver 13.1 for SQL Server
  • Microsoft ODBC Driver 13 for SQL Server
  • Microsoft ODBC Driver 11 for SQL Server

ODBC 13.1

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

Debian 8

sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/debian/8/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
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

Red Hat Enterprise Server 6

sudo su
curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo
exit
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install msodbcsql
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo yum install unixODBC-devel

Red Hat Enterprise Server 7

sudo su
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
exit
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel #to avoid conflicts
sudo ACCEPT_EULA=Y yum install msodbcsql
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y yum install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo yum install unixODBC-devel

SUSE Linux Enterprise Server 11

sudo su
zypper ar https://packages.microsoft.com/config/sles/11/prod.repo
exit
sudo ACCEPT_EULA=Y zypper install msodbcsql
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y zypper install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo zypper install unixODBC-devel

SUSE Linux Enterprise Server 12

sudo su
zypper ar https://packages.microsoft.com/config/sles/12/prod.repo
exit
sudo ACCEPT_EULA=Y zypper install msodbcsql
# optional: for bcp and sqlcmd
sudo ACCEPT_EULA=Y zypper install mssql-tools
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
# optional: for unixODBC development headers
sudo zypper install unixODBC-devel

Ubuntu 15.10

sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/15.10/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
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

Ubuntu 16.04

sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
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

Ubuntu 16.10

sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.10/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
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

ODBC 13

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

Red Hat Enterprise Server 6 (ODBC 13)

sudo su
curl https://packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo
exit
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
ln -sfn /opt/mssql-tools/bin/sqlcmd-13.0.1.0 /usr/bin/sqlcmd
ln -sfn /opt/mssql-tools/bin/bcp-13.0.1.0 /usr/bin/bcp

Red Hat Enterprise Server 7 (ODBC 13)

sudo su
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
exit
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
ln -sfn /opt/mssql-tools/bin/sqlcmd-13.0.1.0 /usr/bin/sqlcmd
ln -sfn /opt/mssql-tools/bin/bcp-13.0.1.0 /usr/bin/bcp

Ubuntu 15.10 (ODBC 13)

sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/15.10/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql=13.0.1.0-1 mssql-tools=14.0.2.0-1
sudo apt-get install unixodbc-dev-utf16 #this step is optional but recommended*
#Create symlinks for tools
ln -sfn /opt/mssql-tools/bin/sqlcmd-13.0.1.0 /usr/bin/sqlcmd
ln -sfn /opt/mssql-tools/bin/bcp-13.0.1.0 /usr/bin/bcp

Ubuntu 16.04 (ODBC 13)

sudo su
curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
exit
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install msodbcsql=13.0.1.0-1 mssql-tools=14.0.2.0-1
sudo apt-get install unixodbc-dev-utf16 #this step is optional but recommended*
#Create symlinks for tools
ln -sfn /opt/mssql-tools/bin/sqlcmd-13.0.1.0 /usr/bin/sqlcmd
ln -sfn /opt/mssql-tools/bin/bcp-13.0.1.0 /usr/bin/bcp

SUSE Linux Enterprise Server 12 (ODBC 13)

sudo su
zypper ar https://packages.microsoft.com/config/sles/12/prod.repo
zypper update
sudo ACCEPT_EULA=Y zypper install msodbcsql-13.0.1.0-1 mssql-tools-14.0.2.0-1
zypper install unixODBC-utf16-devel
#Create symlinks for tools
ln -sfn /opt/mssql-tools/bin/sqlcmd-13.0.1.0 /usr/bin/sqlcmd
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, 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

  • Скачайте последнюю версию msodbcsql .rpm с сайта https://packages.microsoft.com/rhel/7/prod/.
  • Установите зависимости и драйвер.
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

Ubuntu 16.04 (ODBC 13 в автономном режиме)

  • Скачайте последнюю версию msodbcsql .deb с сайта https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/msodbcsql/.
  • Установите зависимости и драйвер.
sudo apt-get install libc6 libstdc++6 libkrb5-3 libcurl3 openssl debconf unixodbc unixodbc-dev #install dependencies
sudo dpkg -i msodbcsql_13.1.X.X-X_amd64.deb #install the Driver

SUSE Linux Enterprise Server 12 (ODBC 13 в автономном режиме)

  • Скачайте последнюю версию msodbcsql .rpm с сайта https://packages.microsoft.com/sles/12/prod/.
  • Установите зависимости и драйвер.
zypper install glibc, libuuid1, krb5, openssl, unixODBC unixODBC-devel #install dependencies
sudo rpm -i  msodbcsql-13.1.X.X-X.x86_64.rpm #install the Driver

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

ldd /opt/microsoft/msodbcsql/lib64/libmsodbcsql-*

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.

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

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

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

  3. Перейдите в каталог msodbcsql-11.0.2270.0, где должен находиться файл install.sh.

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

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

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

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

  8. После просмотра лицензионного соглашения введите 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.

LICENSE.txt Текстовый файл с условиями лицензионного соглашения. Этот файл помещается в папку /usr/share/doc/msodbcsql17/ для версии 17 драйвера и в папку /usr/share/doc/msodbcsql/ для версии 13.
RELEASE_NOTES Текстовый файл с заметками о выпуске. Этот файл помещается в папку /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/.

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

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

Симптомы

64-разрядная версия операционной системы Microsoft Windows включает следующие версии средства Администратор источника данных ODBC (Odbcad32.exe):

  • 32-разрядная версия файла Odbcad32.exe находится в %systemdrive%\Windows\SysWoW64 папке.
  • 64-разрядная версия файла Odbcad32.exe находится в %systemdrive%\Windows\System32 папке.

В файле Odbcad32.exe отображаются следующие типы имен источников данных (DSN):

  • Системные DSN
  • Пользовательские DSN

Симптом 1

В 32 — разрядной версии средства администрирования ODBC отображаются 32 — битовые DSN, 32 – битовые пользовательские DSN и 64 — битовые пользовательские DSN. В 64 — разрядной версии средства администрирования ODBC отображаются 64 — битовые DSN, 32 – битовые пользовательские DSN и 64 — битовые пользовательские DSN.

Симптом 2

SQLDataSourcesФункция возвращает все версии пользовательских DSN, независимо от архитектуры приложения. SQLDataSourcesФункция, которая вызывается в 32-разрядном приложении, возвращает только системные имена DSN для 32-разрядных драйверов, но возвращает пользовательские DSN для 32-разрядных и 64-разрядных драйверов. Аналогичным образом SQLDataSources функция, которая вызывается в 64-разрядном приложении, возвращает только системные имена DSN для 64-разрядных драйверов, но возвращает пользовательские DSN для 32 и 64-разрядных драйверов. Таким образом, если приложение выполняет подключение с помощью пользовательского имени DSN, которое возвращается из SQLDataSources функции, может появиться следующее сообщение об ошибке:

Не найдено имя источника данных и не указан драйвер по умолчанию

Например, рассмотрим следующий сценарий. Вы создаете Пользовательский DSN для 32-разрядного драйвера Microsoft Access Driver (*. mdb). В этом драйвере отсутствует соответствующая 64 — разрядная версия. SQLDataSourcesФункция, которая вызывается в 64-разрядном приложении, возвращает этот Пользовательский DSN для 32-разрядной версии. Тем не менее, если вы сделаете подключение через этот 32-разрядный пользователь DSN, появится сообщение об ошибке, упомянутое ранее в этом разделе.

Причина

Пользовательские имена DSN хранятся в следующем подразделе реестра:

HKEY_CURRENT_USER\Software\ODBC\ODBC.INI

Перенаправление реестра не включено для этого подраздела реестра. Таким образом, пользовательские имена DSN отображаются как в 32, так и в 64 – более ранних версиях средства Администратор ODBC.

Решение

Для обеспечения обратной совместимости в настоящее время не существует решения этой проблемы.

Обходной путь

Чтобы обойти эту проблему, используйте соответствующую версию средства администрирования ODBC. При построении и последующем запуске приложения в качестве 32ового приложения в 64 — разрядной операционной системе необходимо создать источник данных ODBC с помощью средства администрирования ODBC в файле %windir%\SysWOW64\odbcad32 . exe. Чтобы указать тип DSN, можно добавить "_32" к пользовательским источникам данных 32 и "_64" в 64 – битовые DSN пользователя.

Симптомы

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

Ошибка 1919. Ошибка настройки источника данных ODBC: база данных доступа MS. Ошибка ODBC 6. Компонент, не найденный в реестре. Убедитесь, что база данных доступа к файлам MS существует и к ней можно получить доступ.

Если вы выберите Ignore, вы можете получить следующее сообщение об ошибке:

Ошибка 1919. Ошибка настройки источника данных ODBC: Excel файлы. Ошибка 0 ODBC. Убедитесь, что Excel файлы существуют и к нему можно получить доступ.

Вы также можете получить одно из следующих сообщений об ошибке:

  • Ошибка 1919. Ошибка настройки источника данных ODBC: база данных доступа MS. Ошибка 0 ODBC. Убедитесь, что база данных доступа к файлам MS Существует и что вы можете получить к ней доступ.

  • Ошибка 1919. Ошибка настройки источника данных ODBC: Visual FoxPro Database. Ошибка ODBC 0. Убедитесь, что файл Visual FoxPro Database существует и что к нему можно получить доступ.

  • Ошибка 1919. Ошибка настройки источника данных ODBC: Visual FoxPro Tables. Ошибка ODBC 0. Убедитесь, что файл Visual FoxPro Tables существует и к нему можно получить доступ.

  • Ошибка 1919. Ошибка настройки источника данных ODBC: dBASE Files. Ошибка ODBC 6. Убедитесь, что файл dBASE Files существует и вы можете получить к нему доступ.

Причина

Эти проблемы могут возникнуть, если Windows реестра не хватает некоторых ключей реестра.

Решение

Чтобы устранить эту проблему, замените отсутствующие ключи реестра. Для этого используйте один из следующих методов.

Метод 1. Установка MDAC 2.8

Дополнительные сведения об установке MDAC 2.8, включая инструкции по установке и удалению, см. в сайте Microsoft Data Access Components (MDAC).

После установки MDAC 2.8 необходимо перезапустить компьютер и войти в систему с помощью административных учетных данных.

Примечание

MDAC 2.8 также устанавливается при установке microsoft Windows XP Пакет обновления 2 (SP2). Если операционная система Windows XP, вы можете установить Windows XP SP2 вместо того, чтобы следовать предыдущим шагам.

Метод 2. Сброс ключей реестра с помощью файла Mdac.inf

Чтобы сбросить ключи реестра, используйте Mdac.inf. Эта программа может подсказок для Windows cd для получения новых файлов.

Сделайте одно из следующих операций в соответствии с вашими операционными системами и если у вас Windows cd.

Для розничных выпусков Microsoft Windows XP и Microsoft Windows Server 2003

  1. Нажмите кнопку Начните, нажмите кнопку Выполнить, введите путь\inf в поле Открыть, а затем нажмите кнопку ОК.

    В этом примере путь — это путь вашей Windows папки. Например, введите C:\Windows\Inf или C:\Winnt. По умолчанию C:\Windows — это папка, в которой установлен Windows XP, C:\Winnt — это папка, в которой Windows XP устанавливается при обновлении Windows 2000 до Windows XP.

  2. В меню Tools щелкните Параметры папки.

  3. На вкладке Просмотр в поле Advanced Параметры нажмите кнопку Показать скрытые файлы и папки, а затем нажмите кнопку ОК.

  4. Щелкните правой кнопкой мыши Mdac.inf и нажмите кнопку Установите.

  5. Если вам будет предложено Windows cd, вставьте Windows cd в диск CD-ROM или диск DVD-ROM.

  6. Щелкните папку I386 на жестком диске (как правило, C:\I386), а затем нажмите кнопку ОК.

    Если папка I386 является подмостком папки Windows, на некоторых компьютерах ее нельзя выбрать. В этом случае введите полный путь в файлах Copy из окна (например, введите C:\Windows\I386 или C:\Winnt\I386), а затем нажмите кнопку ОК.

  7. Перезагрузите компьютер.

Для оригинального производителя оборудования (OEM) Выпуски Windows XP

Важно!

В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Дополнительные сведения о том, как создать и восстановить реестр, см. в этой информации, как создать и восстановить реестр в Windows.

Шаг 1. Изменение ключей реестра

  1. Найдите папку I386 на жестком диске и заметьте ее путь.

  2. Нажмите кнопку Пуск и выберите пункт Выполнить.

  3. В поле Открыть введите regedit и нажмите кнопку ОК.

  4. В редакторе реестра найдите и нажмите следующий клавишу:

    HKEY_Local_Machine\Software\Microsoft\Windows\CurrentVersion\Setup

  5. Щелкните правой кнопкой мыши запись "Источники установки", а затем нажмите кнопку Изменить.

  6. В поле Значение данных измените значение на путь папки I386 на жестком диске и нажмите кнопку ОК.

  7. Повторите шаги 5 и 6 для каждой из следующих записей:

    • SourcePath
    • ServicePackSourcePath
  8. Закройте редактор реестра.

Шаг 2. Установка Mdac.inf

  1. Нажмите кнопку Начните, нажмите кнопку Выполнить, введите C:\Winnt\Inf в поле Открыть, а затем нажмите кнопку ОК.

  2. В меню Tools щелкните Параметры папки.

  3. На вкладке Просмотр в поле Advanced Параметры нажмите кнопку Показать скрытые файлы и папки, а затем нажмите кнопку ОК.

  4. Щелкните правой кнопкой мыши Mdac.inf и нажмите кнопку Установите.

  5. Если вам будет предложено Windows cd, вставьте Windows cd в диск CD-ROM или диск DVD-ROM.

  6. Щелкните папку I386 на жестком диске (как правило, C:\I386), а затем нажмите кнопку ОК.

    Примечание

    • Если у вас нет компакт-диска для текущей установки Windows, нажмите кнопку Просмотр, а затем найдите и выберите папку I386.
    • Если папка I386 является подмостком папки Windows, на некоторых компьютерах ее нельзя выбрать. В этом случае введите полный путь в файлах Copy из окна (например, введите C:\Windows\I386 или C:\Winnt\I386), а затем нажмите кнопку ОК.
  7. Restart your computer.

Метод 3. Импорт ключей реестра с другого компьютера в сети

Примечание При импорте ключей реестра с другого компьютера убедитесь, что исходный компьютер и компьютер назначения работают с той же операционной системой. Например, если вы используете этот метод на компьютере с Windows XP, найдите компьютер с Windows XP, который можно использовать для экспорта ключей реестра.

Важно!

В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Дополнительные сведения о том, как создать и восстановить реестр, см. в этой информации, как создать и восстановить реестр в Windows.

Часть 1. Экспорт ключей из реестра на компьютере "источник"

  1. На компьютере, который не пропускает клавиши ("исходный" компьютер), нажмите кнопку Начните, нажмите кнопку Выполнить, введите regedit в поле Открыть, а затем нажмите кнопку ОК.

  2. Найдите и нажмите следующий ключ реестра:

    HKEY_CURRENT_USER\Software\ODBC

  3. В меню File щелкните Экспорт.

  4. В поле Сохранить в поле укажите расположение, чтобы временно сохранить файл регистрации (.reg file).

    В поле Имя файла введите имя файла и нажмите кнопку Сохранить.

  5. Найдите и нажмите следующий клавишу:

    HKEY_LOCAL_MACHINE\Software\ODBC

  6. Повторите шаги 4 и 5 для экспорта этого ключа.

Часть 2. Импорт ключей в реестр компьютера "назначения"

  1. Скопируйте экспортированных файлов .reg с исходных компьютеров на временное расположение на компьютере, где отсутствуют ключи (компьютер "назначения").
  2. Нажмите кнопку Начните, нажмите кнопку Запустить, введите в поле regedit Открыть, а затем нажмите кнопку ОК.
  3. В меню реестра нажмите файл реестра импорта.
  4. Найдите и нажмите один из файлов .reg, скопированных в шаге 1, а затем нажмите кнопку Открыть.
  5. Повторите шаги 4 и 5 для другого файла .reg.

Валидация Entity

Рано или поздно, пользовательские данные переданные в наше приложение попадают внутрь Entity.

Entity — это объекты, которые хранят состояние вашего приложения.

Но не "просто хранят". Сущность всегда должна защищать свои доменные инварианты и следить за тем, чтобы она находилась в согласованном состоянии.

Инварианты — это некоторые условия, которые остаются истинными на протяжении всей жизни объекта. Как правило, инварианты передают внутреннее состояние объекта.

Entity не должна существовать в вашем приложении если внутри неполные или невалидные данные.

Как этого добиться?

Проверка данных в конструкторе

Конструктор должен принимать все параметры, которые обязательны для существования сущности, а также валидировать их перед тем, как присвоить значение свойству. Все необязательные параметры могут быть заданы значениями по-умолчанию или быть присвоенными отдельными методами, в которых также следует добавлять проверки перед присваиванием.

В конструкторе необходимо проверять, что данные адекватны, например, что значения находятся в допустимом диапазоне, все значения присутствуют и т.д. В случае если что-то не так - вы должны выбрасывать исключения.

class Order
{
    private Product $product;
    private int $quantity;
    
    public function __construct(Product $product, int $quantity)
    {
        if ($quantity 

Но ведь мы же не будем показывать пользователям исключения?

Всё правильно, исключения не для пользователей. Exceptions, трассировка и контекст должны быть видны только разработчикам. Все исключения выброшенные разработчиком должны быть обработаны перед тем как вывести пользователю что-то на экран.

Проверка данных в методе

Когда обновление определенного поля фактически представляет действие, выполняемое над объектом, определите для него метод в самой сущности. Задача такого метода также заключается в проверке предоставленных ему данных, он должен убедиться, что можно обновить данные, учитывая текущее состояние объекта.

Например вы работаете с заказами. Заказ товара может быть отменен, если он не доставлен. Вместо того чтобы где-то вне сущности делать:

$order->getStatus();  
// isn't delivered 
$order->setCancel();

Определите метод cancel(), который будет выполнять проверки внутри сущности и если всё согласовано — менять её состояние.

class Order
{
    // ...
    public function cancel(): void
    {
        if ($this->status === STATUS::DELIVERED) {
            throw new LogicException(
                sprintf(
                    'Order %s has already been delivered', 
                    $this->id->asString()
                )
            );
        }     
        
        $this->status = STATUS::CANCEL;
    }
}

Используйте Value Objects для проверки отдельных значений

Данный подход позволяет и делегировать проверки, и переиспользовать их в дальнейшем в других частях нашего приложения. Для примера возьмем класс Account, который уже валидирует свои данные в конструкторе и в одном из методов:

class Account
{
    private string $accountNumber;
    private float $amount = 0.00;
    private string $currency = 'USD';
    
    const NUMBER_OF_CHARACTERS = 16;
    
    public function __construct(string $accountNumber)
    {
        if (strlen($accountNumber) !== self::NUMBER_OF_CHARACTERS) {
            // throw exception 
        }
        
        $this->accountNumber = $accountNumber;
    }
    
    public function putMoney(float $amount, string $currency)
    {
        if ($amount currency) {
            //thow exception
        }
        
        $this->amount += $amount;
    }
}

Мы можем отдельно вынести AccountNumber, переместив в него всю валидацию.

Код AccountNumber
class AccountNumer
{
    const NUMBER_OF_CHARACTERS = 16;

    private string $accountNumber;

    public function __construct(string $accountNumber)
    {
        if (strlen($accountNumber) !== self::NUMBER_OF_CHARACTERS) {
            // throw exception
        }
        // another rules

        $this->accountNumber = $accountNumber;
    }

    public function __toString(): string
    {
        return $this->accountNumber;
    }
}

Отдельно выделить Value Object Money который также может взять на себя операцию сложения для логики пополнения счета.

Код Money
class Currency extends SplEnum // Пока не 8.1
{
    const __default = self::USD;

    const USD = 'USD';
    const EUR = 'EUR';

    // etc.
}

class Money
{
    private float $amount;
    private string $currency;

    public function __construct(float $amount, Currency $currency)
    {
        if ($amount amount = $amount;
        $this->currency = $currency;
    }

    public function currency(): string
    {
        return $this->currency;
    }

    public function amount(): float
    {
        return $this->amount;
    }

    public function append(Money $money)
    {
        if ($money->currency() !== $this->currency) {
            // throw exception
        }
        $amount = $this->amount + $money->amount();

        return new self($amount, $this->currency);
    }
}

Тогда наша Entity будет иметь примерно следующий вид:

class Account
{
    private AccountNumer $accountNumber;
    private Money $money;

    public function __construct(AccountNumer $accountNumber)
    {
        $this->accountNumber = $accountNumber;
        $this->money = new Money(0.00, 'USD');
    }

    public function putMoney(Money $money)
    {
        $this->money = $this->money->append($money);
    }
}

Так как в основной сущности мы уже работаем с валидными Value Objects, то нет необходимости проверять что-то дополнительно внутри сущности, мы и так всё затайпхинтили.

Whole value concept (Quantity pattern)

Я часто вижу, что этому концепту уделяют мало внимания при проектировании Value Objects, потому решил отдельно на нём остановиться.

Следует создавать и использовать объекты, которые имеют значение в рамках вашего бизнеса.

Идея простая. Представим, что у нас есть геопозиция. Чтобы понять где именно находится точка нам нужна и широта и долгота. Поскольку сами по себе "широта" или "долгота" не имеют смысла друг без друга, значит они должны находиться в одном месте, внутри одного объекта. Другими словами не нужно создавать отдельные VO, если сами по себе они ничего не значат, а только являются составляющей другого объекта.

Наш пример (Money). У нас есть сумма денег, которую нам нужно сложить с другой суммой. Чтобы принять решение можем ли мы сложить две amount, мы должны проверить currency. Поскольку currency напрямую влияет на логику вычислений, то оно должно находиться там-же, где и amount.

Это может быть что угодно, такие штуки как валюта, координаты, календарный период, номер телефона, расстояние, вес и т.д.

Eсли у нас есть данные которые влияют на логику - они должны быть частью состояния объекта где эта логика реализована. Да-да, вычисления (логика) также должны находиться внутри (например сложение/вычитание денег или вычисление расстояния в случае с гео).

Если же в объекте хранятся данные которые на логику реализованную в этом объекте никак не влияют - было бы неплохо эти данные оттуда вынести чтобы не мешали.

Это не значит, что нужно совсем перестать оборачивать в VO примитивные типы (строки, числа и т.д.). Это значит, что при проектировании стоит задумываться о целесообразности того или иного объекта в вашей предметной области.

Не нужно создавать для Entity сервисы валидации

В доменном слое это усложнит вам жизнь. Вам придется делать бесконечные и ненужные геттеры внутри Entity (ведь для валидатора данные нужно будет как-то извлечь), следить за тем что нужно обновить сервис в случае изменения самой сущности и не забывать его вызвать каждый раз при её создании.

Связь с другой сущностью

Отношения лучше выстраивать с помощью идентификаторов, а не по ссылкам на объект. Таким образом мы понижаем связанность (Low Coupling), а также убираем возможность нежелательных изменений, которые могут происходить внутри связанной сущности.

Если в качестве связи с другой сущностью в метод или в конструктор мы передаём ID, то мы наверняка не можем быть уверены, что Entity с таким ID существует в рамках нашей системы, ведь на входе мы можем убедиться лишь в том, что ID соответствует определенному шаблону (например UUID).

Симптомы

Предположим, что вы пытаетесь подключиться к базе данных с помощью поставщика DB Microsoft OLE для драйверов ODBC в PowerPivot для Microsoft Excel 2010, русская версия или PowerPivot для надстройки Microsoft Excel 2013. Строка подключения создается с помощью мастера импорта таблицы. Тест подключения успешно. Однако при нажатии кнопки Далее вы получите следующее сообщение об ошибке:

Failed to connect to the server. Reason: ERROR [28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user ''.
ERROR [01S00] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute
ERROR [28000] [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user ''.
ERROR [01S00] [Microsoft][ODBC SQL Server Driver]Invalid connection string attribute

Ниже приводится пример созданной строки подключения:

Provider=MSDASQL.1;Persist Security Info=True;User ID=sa;Initial Catalog=test;DSN=MSSQL 2012;Password=**********

Причина

Эта проблема возникает из-за того, что сведения о расширенных свойствах не содержатся в строке подключения ODBC. Ниже приводится пример правильной строки подключения:

Provider=MSDASQL;Persist Security Info=True;User ID=sa;Extended Properties="DSN=MSSQL 2012;UID=sa;APP=Microsoft Office 2013;WSID=GENLI-T430;DATABASE=test;Pwd=**********";Initial Catalog=test;Password=**********

Известные проблемы

Дополнительные проблемы будут опубликованы в блоге о драйверах 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-версий ODBC API (например, 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={ODBC Driver 17 for SQL Server};SERVER={contoso.com};Trusted_Connection={YES};WSID={mydb.contoso.com};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'  

Существует более одного установленного диспетчера драйверов, и приложение использует не тот диспетчер, либо сборка диспетчера драйверов была выполнена неправильно.

Дополнительные сведения об устранении неполадок подключения см. в статьях:

  • Шаги для устранения неполадок с подключением SQL

  • Устранение проблем с подключением в SQL Server 2005 — часть I

  • Устранение проблем с подключением в SQL Server 2008 с помощью кольцевого буфера подключения

  • Средство устранения неполадок проверки подлинности SQL Server

Определение файла, используемого драйвером

Драйверы ODBC для Linux и macOS не могут определить ни используемый файл odbc.ini, ни путь к файлу odbc.ini. Сведения о том, какой файл odbc.ini используется, доступны в средствах unixODBC odbc_config и odbcinst. Эти сведения также можно получить из документации по диспетчеру драйверов unixODBC.

Например, следующая команда отображает расположение системных и пользовательских файлов odbc.ini, которые содержат системные и пользовательские имена источников данных (DSN) соответственно:

$ odbcinst -j
unixODBC 2.3.1
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /home/odbcuser/.odbc.ini`
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

Пользовательские имена DSN доступны только для конкретного пользователя. Пользовательские имена DSN хранятся в файле в домашнем каталоге или в подкаталоге пользователя. Системные имена DSN доступны для использования каждым пользователем в системе, но добавлять, изменять и удалять их могут только системные администраторы. Если у пользователя есть пользовательское имя DSN с тем же именем, что и у системного имени DSN, то при соединениях этого пользователя будет использоваться пользовательское имя DSN. Дополнительные сведения см. в документации unixODBC.

Параметры

Сервер

Имя экземпляра SQL Server в сети. Выберите имя сервера/экземпляра из списка либо введите его в поле Server (Сервер). Также на клиентском компьютере можно создать серверный псевдоним с помощью средства Диспетчер конфигурации SQL Server и ввести это имя в поле Server (Сервер).

При использовании того же компьютера, на котором установлен SQL Server, можно ввести "(локальный)". Затем вы сможете подключиться к локальному экземпляру SQL Server. Это возможно даже в том случае, если запущена несетевая версия SQL Server.

Дополнительные сведения об именах серверов для разных типов сетей см. в документации по установке SQL Server в электронной документации на SQL Server.

Режим проверки подлинности

Выбирает один из следующих режимов проверки подлинности:

  • SQL Server с именем пользователя и паролем.
  • Встроенная проверка подлинности Windows с использованием текущей учетной записи зарегистрированного пользователя.
  • Active Directory — пароль с именем для входа и паролем.
  • Встроенная проверка подлинности AD DS с использованием текущей учетной записи зарегистрированного пользователя.
  • Интерактивная проверка подлинности Active Directory с использованием имени пользователя
  • Проверка подлинности управляемого удостоверения службы с помощью управляемого удостоверения
  • Проверка подлинности субъекта-службы Active Directory с помощью субъекта-службы Azure Active Directory

Дополнительные сведения о режимах проверки подлинности см. в статье Data Source Wizard Screen 2 (Экран 2 мастера источников данных).

Имя участника-службы сервера

Если используется доверительное соединение, можно указать имя участника-службы для соединения с основным сервером.

Идентификатор входа

Указывает имя пользователя SQL Server или Azure Active Directory, используемое для подключения, если для параметра Режим проверки подлинности установлено значение SQL Server, Active Directory — пароль, Active Directory Interactive, Управляемое удостоверение службы или Субъект-служба Active Directory. В противном случае поле Имя для входа будет отключено.

Пароль

Указывает пароль для имени пользователя SQL Server или Azure Active Directory, используемый для подключения, если для параметра Режим проверки подлинности установлено значение SQL Server или Active Directory — пароль. В противном случае поле Пароль будет отключено.

Параметры

Отображает или скрывает группу Параметры. Кнопка Options (Параметры) включена, если поле Server (Сервер) содержит значение.

Изменить пароль

Если данный флажок установлен, будут отображены поля New Password (Новый пароль) и Confirm New Password (Подтверждение нового пароля).

Новый пароль

В этом поле указывается новый пароль.

Подтверждение нового пароля

В этом поле новый пароль указывается второй раз, для подтверждения.

База данных

Указывает базу данных по умолчанию, которая будет использоваться для соединения. Данная настройка переопределяет базу данных по умолчанию, указанную для имени входа на сервере. Если база данных не была указана, соединение использует базу данных по умолчанию, указанную для имени входа на сервере.

Зеркальный сервер

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

Имя участника-службы зеркала

Также можно указать имя участника-службы для зеркального сервера (необязательно). Имя участника-службы зеркального сервера используется для взаимной проверки подлинности клиента и сервера.

Язык

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

Имя приложения

Указывает имя приложения, которое будет храниться в строке данного подключения в столбце program_name представления sys.sysprocesses (необязательный).

Идентификатор рабочей станции

Указывает идентификатор рабочей станции, который будет храниться в строке данного соединения в столбце hostname (имя узла) представления sys.sysprocesses (необязательный).

Использовать устойчивое шифрование данных

Если этот флажок установлен, передаваемые через подключение данные будут шифроваться. По умолчанию имена входа шифруются, даже если этот флажок не установлен.

Надежный сертификат сервера

Этот параметр применяется, только если включено параметр Использовать устойчивое шифрование данных. Если этот флажок установлен, сертификат сервера не будет проверяться на правильность имени узла сервера и выдаваться доверенным центром сертификации.