Функции Microsoft ODBC Driver for SQL Server в Windows
Скачать драйвер ODBC
Драйвер Microsoft ODBC Driver 17.4 for SQL Server в Windows
Дополнительные сведения см. в статье Registry Entries for ODBC Components (Записи реестра для компонентов ODBC).
Возможны следующие значения в формате REG_SZ :
KeepAlive управляет частотой попыток протокола TCP проверить работоспособность неактивного подключения путем отправки пакета keep-alive. По умолчанию это 30 секунд.
KeepAliveInterval определяет интервал, разделяющий повторные передачи пакета keep-alive, до получения ответа. Значение по умолчанию — 1 секунда.
Драйвер Microsoft ODBC Driver 13.1 for SQL Server в Windows
Дайвер Driver 13.1 for SQL Server содержит все функции предыдущей версии (11). В нем добавлена поддержка проверки подлинности Always Encrypted и Azure Active Directory.
Функция Always Encrypted позволяет клиентам шифровать конфиденциальные данные в клиентских приложениях, не раскрывая ключи шифрования для SQL Server. Драйвер с поддержкой Always Encrypted, установленный на клиентском компьютере, реализует эту возможность безопасности за счет автоматического шифрования и расшифровки конфиденциальных данных в клиентском приложении SQL Server. Драйвер шифрует данные в конфиденциальных столбцах перед их передачей в SQL Server. Он также автоматически переписывает запросы, чтобы сохранить семантику приложения. Аналогичным образом драйвер прозрачно расшифровывает данные, хранящиеся в столбцах зашифрованной базы данных, которые содержатся в результатах запроса. Дополнительные сведения см. в статье Использование функции Always Encrypted с драйвером ODBC.
Azure Active Directory позволяет пользователям, администраторам баз данных и программистам приложений использовать проверку подлинности Azure Active Directory. Дополнительные сведения см. в статьях Использование Azure Active Directory с драйвером ODBC и Подключение к Базе данных SQL или Azure Synapse Analytics с помощью проверки подлинности Azure Active Directory.
Драйвер Microsoft ODBC 11 для SQL Server в Windows
Драйвер ODBC для SQL Server содержит все функциональные возможности драйвера ODBC Native Client SQL Server, который входит в состав SQL Server 2012 (11.x). Дополнительные сведения о SQL Server Native Client см. в этой статье. Драйвер ODBC Native Client SQL Server основан на драйвере ODBC, который входит в состав операционной системы Windows. Дополнительные сведения об этом драйвере см. в статье Пакет SDK компонентов доступа к данным Windows DAC.
Этот выпуск драйвера ODBC для SQL Server содержит следующие новые функции:
Организация пулов соединений с учетом драйвера
Асинхронное выполнение (метод уведомления)
Устойчивость подключения
Чтобы обеспечить сохранение подключения приложений к Базе данных SQL Microsoft Azure, драйвер ODBC в Windows может восстанавливать неактивные соединения. Дополнительные сведения см. в статье Устойчивость подключения в драйвере ODBC в Windows.
Изменения в поведении
-y0 может значительно снизить производительность сервера и сети в зависимости от объема возвращаемых данных.
Скачивание драйвера ODBC Driver for SQL Server
Microsoft ODBC Driver for SQL Server — это отдельная библиотека динамической компоновки (DLL), которая содержит поддержку времени выполнения для приложений, использующих API машинного кода для подключения к SQL Server. Используйте Microsoft ODBC Driver 17 for SQL Server для создания новых и расширения существующих приложений, которым необходимо использовать новые возможности SQL Server.
Скачать для Windows
Распространяемый установщик Microsoft ODBC Driver for SQL Server версии 17 устанавливает клиентские компоненты, необходимые во время выполнения, чтобы воспользоваться преимуществами функциями нового SQL Server. При необходимости он устанавливает файлы заголовков, которые требуются для разработки приложения, использующего API ODBC. Начиная с версии 17.4.2, установщик также включает и устанавливает библиотеку проверки подлинности Microsoft Active Directory (ADAL.dll).
Версия 17.8.1 является последней общедоступной (GA) версией. Если у вас установлена предыдущая версия Microsoft ODBC Driver for SQL Server 17, то при установке версии 17.8.1 она обновляется до версии 17.8.1.
Сведения о версии
Если вы открываете локализованную версию этой страницы и хотите просмотреть наиболее актуальное содержимое, выберите элемент Прочитать на английском в верхней части этой страницы. С версии сайта US-English вы можете скачать SSMS на других языках из числа доступных.
Доступные языки
Этот выпуск драйвера Microsoft ODBC Driver for SQL Server доступен для установки на следующих языках:
Заметки о выпуске для Windows
Дополнительные сведения об этом выпуске для Windows см. в заметках о выпуске для Windows.
Предыдущие выпуски для Windows
Чтобы скачать предыдущие версии для Windows, см. страницу с предыдущими выпусками Microsoft ODBC Driver for SQL Server.
Загрузка для Linux и macOS
Microsoft ODBC Driver for SQL Server можно скачать и установить с помощью диспетчеров пакетов для Linux и macOS, используя соответствующие инструкции по установке.
Установка ODBC для SQL Server (Linux)
Установка ODBC для SQL Server (macOS)
Если необходимо скачать пакеты для автономной установки, все версии доступны по следующим ссылкам.
Пакеты с именем msodbcsql17-* являются последней версией. Пакеты с именем msodbcsql-* являются версией 13 драйвера.
Установка диспетчера драйверов
Скачать драйвер ODBC
Эта статья содержит инструкции по установке диспетчера драйверов unixODBC для использования со всеми версиями драйвера Microsoft ODBC для SQL Server в Linux и macOS.
Перед установкой диспетчера драйверов unixODBC удалите с компьютера все установленные пакеты диспетчера драйверов. Установка диспетчера драйверов unixODBC может вызвать сбой существующего диспетчера драйверов.
Установка диспетчера драйверов для Microsoft ODBC Driver 13, 13.1 и 17
Зависимость диспетчера драйверов разрешается автоматически системой управления пакетами при установке Microsoft ODBC Driver 13, 13.1 или 17 for SQL Server в Linux или macOS по инструкциям в следующих статьях.
Установка диспетчера драйверов для Microsoft ODBC Driver 11 for SQL Server
(SUSE и только в Red Hat Linux).
Использование скрипта установки
Порядок установки диспетчера драйверов:
Убедитесь, что у вас есть корневое разрешение.
Когда все готово к установке, а ваш компьютер имеет доступ к внешнему сайту по протоколу FTP, выполните следующую команду: ./build_dm.sh.
Введите YES, чтобы приступить к распаковке файлов. Эта часть процесса может занять около 5 минут.
После завершения выполнения скрипта следуйте инструкциям на экране, чтобы установить диспетчер драйверов unixODBC
Теперь все готово для установки драйвера. Дополнительные сведения см. в инструкциях по установке драйвера ODBC для Linux или macOS.
Установка вручную
Если скрипту установки не удалось завершить работу, самостоятельно выполните настройку и сборку подходящего диспетчера драйверов.
Удалите все старые установленные версии unixODBC (например, unixODBC 2.2.11). В Red Hat Enterprise Linux 5 или 6 выполните следующую команду: yum remove unixODBC. В SUSE Linux Enterprise zypper удалить unixODBC.
Перейдите на сайт http://www.unixodbc.org. Щелкните ссылку Скачать в левой части страницы, чтобы перейти на страницу скачивания. Щелкните соответствующую ссылку, чтобы сохранить файл unixODBC-2.3.0.tar.gz на компьютере. В этом выпуске Microsoft ODBC Driver 11 for SQL Server версия UnixODBC-2.3.1 не поддерживается.
На компьютере Linux выполните команду: tar xvzf unixODBC-2.3.0.tar.gz.
Перейдите в каталог unixODBC-2.3.0.
В командной строке выполните команду: export CPPFLAGS.
В командной строке (выполнив вход в корень) выполните команду: make.
В командной строке (выполнив вход в корень) выполните команду: make install.
Теперь все готово для установки драйвера. Дополнительные сведения см. в инструкциях по установке драйвера ODBC для Linux или macOS.
Указания по программированию
Скачать драйвер ODBC
Функции программирования Microsoft ODBC Driver for SQL Server на платформах macOS и Linux основаны на ODBC в SQL Server Native Client (SQL Server Native Client (ODBC)). SQL Server Native Client основан на ODBC в компонентах доступа к данным Windows DAC (Справочник по программированию ODBC).
Доступные функции
Следующие разделы документации по SQL Server Native Client для ODBC (SQL Server Native Client (ODBC)) применяются при использовании драйвера ODBC в macOS и Linux:
Неподдерживаемые функции
Правильность работы следующих функций в этой версии драйвера ODBC не была проверена на платформах macOS и Linux:
Следующие функции недоступны в версии драйвера ODBC для платформ macOS и Linux:
Поддержка кодировок
Для версий 13 и 13.1 драйвера ODBC данные SQLCHAR должны иметь кодировку UTF-8. Другие кодировки не поддерживаются.
Для версии 17 драйвера ODBC поддерживаются данные SQLCHAR в одной из следующих кодировок:
Из-за iconv различий в musl и glibc многие из этих языковых стандартов не поддерживаются в Alpine Linux.
Дополнительные сведения см. в статье Functional differences from glibc (Функциональные различия с glibc).
| Имя | Описание |
|---|---|
| UTF-8 | Юникод |
| CP437 | Латиница MS-DOS (США) |
| CP850 | Латиница 1 MS-DOS |
| CP874 | Латиница/тайский |
| CP932 | Японский, Shift-JIS |
| CP936 | Китайский (упрощенный), GBK |
| CP949 | Корейский, EUC-KR |
| CP950 | Китайский (традиционный), Big5 |
| CP1251 | Кириллица |
| CP1253 | Греческий |
| CP1256 | Арабский |
| CP1257 | Балтийская |
| CP1258 | Вьетнамский |
| ISO-8859-1 / CP1252 | Латиница-1 |
| ISO-8859-2 / CP1250 | Латиница-2 |
| ISO-8859-3 | Латиница-3 |
| ISO-8859-4 | Латиница-4 |
| ISO-8859-5 | Латиница/кириллица |
| ISO-8859-6 | Латиница/арабский |
| ISO-8859-7 | Латиница/греческий |
| ISO-8859-8 / CP1255 | Иврит |
| ISO-8859-9 / CP1254 | Турецкий |
| ISO-8859-13 | Латиница-7 |
| ISO-8859-15 | Латиница-9 |
Данные SQLWCHAR должны иметь кодировку UTF-16LE (прямой порядок байтов).
Если при привязке входных параметров с помощью SQLBindParameter указан узкосимвольный тип SQL, такой как SQL_VARCHAR, драйвер преобразует предоставленные данные из кодировки клиента в кодировку SQL Server по умолчанию (обычно это кодовая страница 1252). Выходные параметры драйвер преобразует из кодировки, указанной в сведениях о параметрах сортировки, связанных с данными, в кодировку клиента. Однако возможна потеря данных — символы исходной кодировки, не имеющие соответствия в конечной кодировке, преобразуются в вопросительные знаки (?).
Чтобы избежать этого при привязке входных параметров, укажите символьный тип Юникода SQL, например SQL_NVARCHAR. В этом случае драйвер выполняет преобразование из кодировки клиента в кодировку UTF-16, в которой могут быть представлены все символы Юникода. Кроме того, конечный столбец или параметр на сервере также должен иметь тип Юникода (nchar, nvarchar, ntext) или такой тип, в параметрах сортировки или кодировке которого могут быть представлены все символы исходных данных. Чтобы избежать потери данных в выходных параметрах, укажите для Юникода тип SQL либо тип C (SQL_C_WCHAR), вследствие чего драйвер вернет данные в кодировке UTF-16 либо в узкосимвольном типе C, и убедитесь в том, что в кодировке клиента могут быть представлены все символы исходных данных (это представление всегда возможно в случае с UTF-8).
Дополнительные сведения о параметрах сортировки и кодирования см. в разделе Поддержка параметров сортировки и Юникода.
Существуют различия в преобразовании кодировки между Windows и рядом версий библиотеки iconv в Linux и macOS. Текстовые данные в кодовой странице 1255 (иврит) имеют одну кодовую точку (0xCA), которая ведет себя по-разному при преобразовании в Юникод. В Windows этот символ преобразуется в кодовую точку UTF-16 0x05BA. В macOS и Linux с библиотекой libiconv до версии 1.15 он преобразуется в кодовую точку 0x00CA. В Linux с библиотеками iconv, которые не поддерживают редакцию 2003 кодировки Big5/CP950 ( BIG5-2003 ), добавленные с использованием этой редакции символы преобразуются неправильно. В кодовой странице 932 (японский, Shift-JIS) результат декодирования символов, которые изначально не определены в стандарте кодировки, также различается. Например, байт 0x80 преобразуется в U+0080 в Windows, но может стать U+30FB в Linux и macOS в зависимости от версии iconv.
Когда в ODBC Driver 13 и 13.1 многобайтовые символы UTF-8 или суррогаты UTF-16 распределяются между буферами SQLPutData, это приводит к повреждению данных. Для потоковой передачи SQLPutData используйте буферы, чтобы не разделять на части кодировку одного символа. В версии 17 драйвера ODBC это ограничение снято.
OpenSSL
Начиная с версии 17.4, драйвер загружает OpenSSL динамически, что позволяет запускать его на системах, имеющих версию 1.0, либо 1.1, без надобности в отдельных файлах драйверов. При наличии нескольких версий OpenSSL драйвер пытается загрузить последнюю версию. Сейчас драйвер поддерживает OpenSSL 1.0.x и 1.1.x
При этом возможен конфликт, если приложение, использующее драйвер (или один из его компонентов), связано с другой версией OpenSSL или динамически загружает ее. Если в системе присутствует несколько версий OpenSSL и приложение используют их, настоятельно рекомендуется убедится, что версии, загруженные приложением и драйвером, совпадают, так как ошибки могут привести к повреждению памяти и, таким образом, они не обязательно будут проявляться очевидным или последовательным образом.
Alpine Linux
Дополнительные замечания
Вы можете создать выделенное административное соединение с использованием проверки подлинности SQL Server и комбинации узел,порт. Члену роли Sysadmin сначала нужно сначала обнаружить порт выделенного административного соединения. Инструкции см. в статье Диагностическое соединение для администраторов баз данных. Например, если бы порт выделенного административного соединения имел значение 33000, вы могли бы подключиться к нему с помощью sqlcmd следующим образом:
Выделенные административные соединения должны использовать проверку подлинности SQL Server.
Диспетчер драйверов UnixODBC возвращает ошибку «Недопустимый идентификатор атрибута или параметра» для всех атрибутов инструкции, когда они передаются через SQLSetConnectAttr. Когда SQLSetConnectAttr в среде Windows получает значение атрибута инструкции, он передает это значение драйверу для установки во всех активных инструкциях, являющихся дочерними элементами дескриптора подключения.
Подключение из Linux или macOS
Скачать драйвер ODBC
В этой статье описывается, как можно создать подключение к базе данных SQL Server.
Свойства подключения
Ключевые слова и атрибуты строки подключения и имени DSN, поддерживаемые в Linux и macOS, можно найти здесь.
При подключении к базе данных, которая использует зеркальное отображение базы данных (имеет партнера по обеспечению отработки отказа), не указывайте имя базы данных в строке подключения. Вместо этого отправьте команду useимя_базы_данных, чтобы подключиться к базе данных перед выполнением запросов.
Значение, передаваемое в ключевое слово Driver, может быть одним из следующих:
именем, использованным при установке драйвера;
путем к библиотеке драйвера, которая была указана в INI-файле шаблона, используемого для установки драйвера.
Использовать имена DSN не обязательно. Вы можете использовать имя DSN для определения ключевых слов строки подключения с именем DSN с последующим созданием соответствующей ссылки в строке подключения. Чтобы создать имя DSN, создайте (при необходимости) и измените файл
Чтобы подключиться к именованному экземпляру через статический порт, используйте Server=имя_сервера,номер_порта. Подключение к динамическому порту не поддерживается в версиях ниже 17.4.
Кроме того, можно добавить сведения о DSN в файл шаблона и выполнить следующую команду, чтобы добавить его в
Можно проверить, что драйвер работает, используя isql для проверки подключения или следующую команду:
Использование TLS/SSL
Для шифрования подключений к SQL Server можно использовать протокол TLS, ранее называемый SSL. TLS защищает имена пользователей и пароли SQL Server по сети. Кроме того, TLS проверяет идентификатор сервера для защиты от атак «злоумышленник в середине».
Включение шифрования повышает безопасность за счет снижения производительности.
| TrustServerCertificate=no | TrustServerCertificate=yes | |
|---|---|---|
| Encrypt=no | Сертификат сервера не проверяется. Данные, передаваемые между клиентом и сервером, не шифруются. | Сертификат сервера не проверяется. Данные, передаваемые между клиентом и сервером, не шифруются. |
| Encrypt=yes | Сертификат сервера проверяется. Данные, передаваемые между клиентом и сервером, шифруются. Имя (или IP-адрес) в общем имени субъекта (CN) или альтернативном имени субъекта (SAN) в TLS/SSL-сертификате SQL Server должно точно совпадать с именем (или IP-адресом) сервера, указанным в строке подключения. | Сертификат сервера не проверяется. Данные, передаваемые между клиентом и сервером, шифруются. |
TLS использует библиотеку OpenSSL. Следующая таблица содержит минимально поддерживаемые версии OpenSSL, а также расположения хранилища доверия сертификатов по умолчанию для каждой платформы:
| Платформа | Минимальная версия OpenSSL | Расположение хранилища доверия сертификатов по умолчанию |
|---|---|---|
| Debian 10 | 1.1.1 | /etc/ssl/certs |
| Debian 9 | 1.1.0 | /etc/ssl/certs |
| Debian 8.71 | 1.0.1 | /etc/ssl/certs |
| OS X 10.11, macOS | 1.0.2 | /usr/local/etc/openssl/certs |
| Red Hat Enterprise Linux 8 | 1.1.1 | /etc/pki/tls/cert.pem |
| Red Hat Enterprise Linux 7 | 1.0.1 | /etc/pki/tls/cert.pem |
| Red Hat Enterprise Linux 6 | 1.0.0-10 | /etc/pki/tls/cert.pem |
| SUSE Linux Enterprise 15 | 1.1.0 | /etc/ssl/certs |
| SUSE Linux Enterprise 11, 12 | 1.0.1 | /etc/ssl/certs |
| Ubuntu 20.04, 21.04 | 1.1.1 | /etc/ssl/certs |
| Ubuntu 18.04 | 1.1.0 | /etc/ssl/certs |
| Ubuntu 16.04, 16.10, 17.10 | 1.0.2 | /etc/ssl/certs |
| Ubuntu 14.04 | 1.0.1 | /etc/ssl/certs |
Можно также указать шифрование в строке подключения с помощью параметра Encrypt при использовании SQLDriverConnect для подключения.
Настройка параметров поддержания активности TCP
KeepAlive= управляет частотой попыток протокола TCP проверить работоспособность неактивного подключения путем отправки пакета keep-alive. Значение по умолчанию — 30 секунд.
KeepAliveInterval= определяет интервал, разделяющий повторные передачи пакета keep-alive, пока не происходит получение ответа. Значение по умолчанию составляет 15 секунд.



