понедельник, 21 января 2008 г.

(K)Ubuntu. Настраиваем доступ к Microsoft SQL Server

Вобщем возникла настоятельная необходимость получить доступ к M$ SQL базам из Linux. Немного подумав, я вспомнил что такую связку (Linux -> M$ SQL) можно поднять через ODBC. Но нужен odbc-драйвер, который умеет работать с M$ SQL. Память подсказала название драйвера - FreeTDS.
Дальнейшие действия справедливы для (k)ubuntu 7.10. Для других дистрибутивов названия пакетов и расположение конфигурационных файлов могут (и будут) отличаться.

Установим необходимые пакеты:
sudo aptitude install tdsodbc unixodbc odbc-bin php5-odbc
Настройка FreeTDS.
Для настройки FreeTDS нужно в конфигурационный файл /etc/freetds/freetds.conf добавить новую секцию для нашего M$ SQL сервера (название секции может быть любым):
[MsSQL]
host = sql.mydomen.ru
port = 1433
tds version = 8.0
client charset = WINDOWS-1251
где:
host - доменное имя или IP сервера с SQL.
tds version - версия протокола TDS, которая определяется по таблице. Версия 8.0 для Microsoft SQL Server 2000.
FreeTDS использует iconv для перекодирования потока. Если client charset не установлена, то перекодировка отключается и используется дефолтная ISO-8859-1. Эта переменная может принимать все кодировки библиотеки iconv.

Настройка ODBC.
Чтобы ODBC работала с FreeTDS нужно настроить драйвера, для этого скопируем файл описания драйверов из поставки FreeTDS /usr/share/freetds/odbcinst.ini в /etc/odbcinst.ini или, если /etc/odbcinst.ini уже существует и в нем есть записи других драйверов, добавим секцию для FreeTDS:
[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/lib/odbc/libtdsodbc.so
Setup = /usr/lib/odbc/libtdsS.so
CPTimeout =
CPReuse =
Далее нужно настроить систему ODBC. Сделать это можно 2-мя путями:
1. Посредством графической утилиты ODBCConfig (из пакета odbc-bin).
2. Отредактировать файл /etc/odbc.ini, внеся в него соответствующие секции:
[SQLOnLine]
Description = FreeTDS
Driver = FreeTDS
Servername = MsSQL
Database = Report
UID = user
PWD = passwd
Port = 1433
где:
Description - описание драйвера.
Driver - имя раздела из файла /etc/odbcinst.ini.
Servername - имя раздела, описывающего сервер БД, из файла /etc/freetds/freetds.conf.
Database - имя базы данных на M$ SQL сервере, к которой нужно получить доступ.
UID и PWD - пользователь, заведенный на M$ SQL сервере и грантованный на работу с данной БД.

После внесения необходимых данных в конфигурационные файлы, нужно удостовериться в работе ODBC. Для этого запускаем графическое приложение DataManagerII (пакет odbc-bin). Выбираем System Data Source, видим название БД SQLOnLine, которую определили в odbc.ini, выбираем ее, вводим логин и пароль и видим, разрешенные таблицы.
Все, можно работать.

6 комментариев:

Анонимный комментирует...

При установке требуемых утилит apt сообщил, что odbc-bin нету, зато есть unixodbc-bin. Что делать, установил это. Но вот беда, эта утилита не запускается. "команда не найдена".

klek комментирует...

Я настройки odbc.ini делал руками.

KoRteS комментирует...

По этой инструкции я подключился к БД, за чтобольшое спс, а вот что мне теперь в *.udl файле прописать да бы програму законектить к БД

Анонимный комментирует...

"Господь… в моменты чрезвычайные посылает людей исключительно благодатной одарённости, как бы Пророков, сильных Духом и Верою. Не имея официального назначения, эти люди самим делом выдвигаются из общей массы и становятся предводителями других… Это предводительство не имеет официального характера, не является установленной должностью и не всегда держится служебных рамок. Как и всякое пророчество – оно есть личный подвиг таких людей… » А вот мой сайт возможно вас за интересует это - очередной островок любви и нежности - buy viagra ;);)...Большое спасибо вам и я очень благадарна вам за визит на мой сайт ...удачи...С Уважением Лариса

Vorb комментирует...

А зачем указывать логин и пасс к базе в конфиге odbc, если потом при подключении к базе через апи все равно их придется указывать?

Eugene комментирует...

Спасибо!
Очень помогло. Наконец то подключился.