Mssql connect from linux

Подключение к Microsoft SQL из linux
(с помощью FreeTDS)

В различных случаях Вам может понадобиться подключиться из linux системы к СУБД Microsoft SQL (работающей под управлением Microsoft Windows). Например, Вы хотите организовать запись истории звонков Вашей АТС (например, CDR Asterisk) или даже записывать сами звонки в базу данных. В любом случае Вам не обойтись без соответствующих подсистем, отвечающих за связь между программами на linux и базами данных в MS SQL.

Само решение задачи по такому подключению состоит из нескольких этапов:

  1. Установка и настройка Microsoft SQL сервера (рассмотрение этой задачи выходит за рамки данной статьи).
  2. Настройка Microsoft SQL сервера для подключений извне (будет затронуто очень поверхностно).
  3. Установка FreeTDS.
  4. Проверка связи с Microsoft SQL сервером.
  5. Настройка FreeTDS для подключения к Microsoft SQL.
  6. Диагностика соединения через FreeTDS с Microsoft SQL сервером.
  7. Возможные ошибки, возникающие в процессе установки и настройки FreeTDS.

Установка и настройка Microsoft SQL сервера / настройка MS SQL сервера для подключений извне

Все примеры из данной статьи тестировались в работе с MS SQL 2005 / 2008. SQL сервер желательно устанавливать в mixed режиме (чтобы авторизовываться можно было как пользователь windows и/или как пользователь SQL сервер). Данное требование желательно, но не обязательно.

Включите использование протокола tcp/ip в настройках сервера (чтобы к нему можно было подключаться по сети).

Если предполагается использование instance вместо номеров портов (например, если у Вас несколько instance на одном сервере), то не забудьте включить и запустить службу «SQL Server Browser» (если с этим возникают проблемы, см. «Возможные ошибки, возникающие в процессе настройки FreeTDS», внизу статьи).

Установка FreeTDS

Сайт программы FreeTDS находится здесь: http://www.freetds.org/.
Прямая ссылка для скачивания программы: ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz.
Актуальная версия программы — FreeTDS 0.91

Для скачивания и распаковки программы запустите команды:
cd /usr/src/
wget ftp://ftp.freetds.org/pub/freetds/stable/freetds-stable.tgz
tar -xvzf freetds-stable.tgz

Теперь перейдите в нужную папку и запустите программы конфигурирования, сборки и установки (название папки зависит от версии программы, приведен пример для версии 0.91):
cd /usr/src/freetds-0.91/
./configure
make
make install

В случае успешного выполнения команд (отсутствия ошибок) установка FreeTDS закончена.

Проверка связи с Microsoft SQL Server

Для начала попробуем подключиться к SQL серверу с помощью telnet:
telnet sql-server 1433
или (возможен и такой вариант порта):
telnet sql-server 1434
Должно произойти выполнение подключения к SQL серверу. Для отключения достаточно несколько раз нажать Enter.

Теперь проверим работу FreeTDS с сервером Microsoft SQL:
из командной строки (из-под root) запустите:
TDSVER= номер-версии-TDS tsql -H имя-сервера-SQL -p номер-порта-SQL -U имя-пользователя-БД

Читайте также:  Переводчик safari mac os mojave

При этом возможны 2 способа авторизации на SQL сервере: авторизация windows и авторизация SQL. Кроме того, от версии SQL сервера зависит и версия протокола TDS, по которому будет происходить обмен. Например, по умолчанию серверы MS SQL 2005/2008 работают с TDS Version 7.2.

Авторизация windows:
TDSVER=7.2 tsql -H test-sql.mydomain.ru -p 1433 -U test-sql\\Administrator
при запросе пароля ввести пароль пользователя windows (пароль для test-sql\Administrator).
Авторизация SQL:
TDSVER=7.2 tsql -H test-sql.mydomain.ru -p 1433 -U sql-username
при запросе пароля ввести пароль пользователя sql (пароль для sql-username)

При успешном подключении появится приглашение:
1>_
теперь можно ввести команды:
version — чтобы узнать используемую версию протокола TDS (оказалось, что для MS SQL 2005 используется TDS версия 7.1)
exit — для выхода

Настройка FreeTDS для подключения к Microsoft SQL

Сначала необходимо определить местоположение файла с конфигурацией FreeTDS (файл называется freetds.conf, но их может быть несколько в Вашей операционной системе).
Для этого выполните следующую команду
tsql -C

В строке «freetds.conf directory:» Вы увидите путь к файлу с конфигурацией FreeTDS.

Теперь откройте файл freetds.conf по найденному пути и внесите необходимые изменения. Вы можете почитать (и самостоятельно перевести, а также найти нужные Вам параметры) руководство с сайта www.freetds.org, либо можете воспользоваться приведенными ниже инструкциями.
Обратите внимание: инструкции приведены для версии FreeTDS 0.91, опробованы в работе с Microsoft SQL Server 2005/2008, со стороны FreeTDS использованы операционные системы CentOS 6.4 и Debian 7.1.

В файле freetds.conf создайте свою секцию, например:

После настройки freetds.conf ничего перезагружать не нужно.

Диагностика соединения через FreeTDS с Microsoft SQL сервером

Теперь необходимо проверить конфигурацию, настроенную в файле freetds.conf:
tsql -S mytest
где mytest — это название секции в файле freetds.conf
Обратите внимание: при запуске этой команды возникнет ошибка!

tsql -S mytest
locale is «en_US.UTF-8»
locale charset is «UTF-8»
using default charset «UTF-8»
Error 20002 (severity 9):
Adaptive Server connection failed
There was a problem connecting to the server

Чтобы убедиться, что конфигурация настроена правильно, попробуйте запустить такую команду:
tsql -S mytest -U имя-пользователя-SQL
например:
tsql -S mytest -U sql-username

После запуска команды введите пароль пользователя sql-username. В этом случае (если все настроено правильно) появится приглашение:

tsql -S mytest -U sql-username
Password:
locale is «en_US.UTF-8»
locale charset is «UTF-8»
using default charset «UTF-8»
1>_

Для выхода наберите exit и нажмите Enter. И обратите внимание на то, что указано в строке «using default charset». Это — кодировка базы данных, используемая для подключения к серверу. В случае, если у Вас кодировка базы данных не английская, то можно будет задать эту кодировку при подключении из программы, которая будет использовать FreeTDS.

Возможные ошибки, возникающие в процессе установки и настройки FreeTDS

OS error 115, «operation now in progress»

При попытке подключения к серверу Microsoft SQL с помощью tsql появляется следующее сообщение:

Error 20017 (severity 9):
Unexpected EOF from the server
OS error 115, «operation now in progress»
Error 20002 (severity 9):
Adaptive Server connection failed
There was a problem connecting to the server

Это значит, что указана неверная версия TDS. Например, Вы указали tds 5.0 версию или 8.0, либо вообще ее не указали (в этом случае используется версия по умолчанию — 5.0). Для SQL сервера 2005/2008 необходимо использовать версию TDS 7.x (например, 7.1 или 7.2).
Для правильного выбора версии TDS см здесь:
http://www.freetds.org/userguide/choosingtdsprotocol.htm

Читайте также:  Как запустить ноутбук linux

Error 20013 (severity 2): Unknown host machine name.

При попытке подключения к серверу Microsoft SQL с помощью tsql появляется следующее сообщение:

Error 20012 (severity 2):
Server name not found in configuration files.
Error 20013 (severity 2):
Unknown host machine name.
There was a problem connecting to the server

Это означает, что указано неверное имя сервера (или к серверу невозможно подключиться по данному имени). Проверьте, что имя сервера резолвится (в нужный IP адрес).
В случае, если Вы уже указали IP адрес и Вы используете файл конфигурации freetds.conf, а эта ошибка по-прежнему появляется, убедитесь, что между словом «host», знаком «=» и именем сервера стоят пробелы. В файле freetds.conf все параметры должны отделяться от знака «=» и от значений пробелами!

OS error 111, «connection refused»

При попытке подключения к серверу Microsoft SQL с помощью tsql появляется следующее сообщение:

Error 20009 (severity 9):
Unable to connect: Adaptive Server is unavailable or does not exist
OS error 111, «connection refused»
There was a problem connecting to the server

Такой компьютер существует (возможно, это даже требуемый SQL сервер), но к нему невозможно подключиться. Обычно это происходит, когда указан неверный порт, либо когда не включено использование tcp/ip в настройках сервера. Попробуйте подключиться к указанному Вами серверу и порту с помощью telnet. В случае успешного подключения отобразится примерно следующее:
Connected to test-sql.mydomain.ru.
Escape character is ‘^]’.

Не удается подключиться к instance на MS SQL сервере

Если не удается подключиться к instance на MS SQL сервере, то сначала попробуйте отобразить все instance сервера:
tsql -LH test-sql.mydomain.ru
если НИЧЕГО не отображается, значит на сервере выключен доступ! Надо настраивать сервер.

В случае успеха отображается сообщение, аналогичное этому:
ServerName TEST-SQL
InstanceName MSSQLSERVER
IsClustered No
Version 9.00.1399.06
tcp 1433
np \\TEST-SQL\pipe\sql\query

После этого можно в настройках, в файле freetds.conf в нужной секции вместо «port = . » указать «instance = . «. Обратите внимание: указывать можно ЛИБО port ЛИБО instance! Не оба!
например:
instance = MSSQLSERVER

Настройка instance на сервере Microsoft SQL

Для работы с instance (а не с номерами портов) на сервере SQL открывается дополнительный UDP порт 1434.

Техническое описание:
Служба «SQL Server, браузер», UDP-порт 1434. Служба «SQL Server, браузер» прослушивает входящие соединения к именованному экземпляру и возвращает клиенту номер TCP-порта, соответствующего именованному экземпляру. Обычно служба «SQL Server, браузер» запускается при использовании именованного экземпляра компонента Database Engine. Если клиент настроен для соединения с именованным экземпляром по заданному порту, то службу «SQL Server, браузер» запускать не обязательно.

Источник

Как подключиться к Microsoft SQL Server из Linux?

Всем привет! У начинающих разработчиков, кто только начинает работать с Microsoft SQL Server, может возникнуть вопрос – «Можно ли каким-то образом подключиться к Microsoft SQL Server из операционной системы Linux?». Ответ – да, можно, для этого есть специальный инструмент, который позволяет работать с Microsoft SQL Server из Linux, т.е. осуществлять разработку хранимых процедур и функций, посылать SQL запросы, выгружать данные, иными словами, выполнять все те действия, которые выполняет программист, работающий с базой данных SQL Server.

Сегодня я расскажу, что это за инструмент и как с помощью него подключиться к Microsoft SQL Server из Linux.

Читайте также:  Backup для linux ubuntu

Инструмент для работы с Microsoft SQL Server из Linux

Как известно, Microsoft SQL Server, начиная с 2017 версии, можно установить на Linux.

Однако основной инструмент для работы с SQL Server, т.е. SQL Server Management Studio, реализован только под Windows. Иными словами, SSMS не получится использовать в Linux, чтобы подключиться к SQL Server и осуществлять разработку баз данных. Это возможно, только если Management Studio установлена на Windows.

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

Компания Microsoft дала нам такой инструмент – это Azure Data Studio.

Azure Data Studio – это бесплатный кроссплатформенный инструмент с открытым исходным кодом для работы с базами данных Microsoft SQL Server.

Более подробно о том, что это за инструмент, для чего он создан, каким функционалом он обладает, я рассказывал в отдельной статье – Обзор Azure Data Studio.

Таким образом, основным инструментом для работы с Microsoft SQL Server, если у нас установлена операционная система Linux, будет именно Azure Data Studio.

Подключение к Microsoft SQL Server из Linux

Чтобы подключиться к Microsoft SQL Server с помощью Azure Data Studio из Linux, необходимо выполнить всего два шага.

Шаг 1 – Установка Azure Data Studio на Linux

Подробно о том, как установить Azure Data Studio на операционную систему Linux, я рассказывал в отдельном материале, поэтому здесь этот процесс я описывать не буду.

Вот этот материал

Шаг 2 – Настройка подключения к Microsoft SQL Server

Теперь, когда Azure Data Studio у нас установлена, мы можем подключиться к Microsoft SQL Server из Linux и работать с базами данных.

Для этого необходимо настроить подключение к SQL Server.

Чтобы настроить подключение, необходимо перейти в раздел «Подключения» (Connections) и нажать кнопку «Добавить подключение» (Add connection).

После этого откроется форма для настройки подключения.

Чтобы настроить подключение к Microsoft SQL Server, необходимо ввести следующие данные:

  • Тип подключения – Microsoft SQL Server;
  • Server – адрес сервера, на котором установлен SQL Server (включая имя экземпляра сервера);
  • Authentification type – тип аутентификации, вводим «SQLLogin», данный тип подразумевает встроенную проверку подлинности SQL Server, т.е. на самом SQL Server у нас должно быть создано имя входа;
  • User name – имя входа на SQL Server;
  • Password – пароль от имени входа;

По желанию Вы также можете указать:

  • Remember password – поставьте галочку, чтобы сохранить пароль для последующих подключений;
  • Database name – имя базы данных, к которой подключаться по умолчанию;
  • Server group – если есть серверные группы, Вы можете указать здесь ту группу, к которой будет относиться данное подключение.

В случае необходимости Вы можете более тонко настроить подключение, для этого необходимо нажать на кнопку «Дополнительно», в результате откроются расширенные параметры подключения.

После ввода данных нажимаем «Connect».

В итоге в подключениях отобразится новое подключение, в данном случае к Microsoft SQL Server, и Вы можете начать работать с базами данных, например, разрабатывать процедуры, функции, писать SQL запросы, выгружать данные и так далее.

На сегодня это все, надеюсь, материал был Вам полезен, пока!

Источник

Оцените статью